我尝试使用LibSBMLSim作为c语言的api。
我引用了https://fun.bio.keio.ac.jp/software/libsbmlsim/并安装了LibSBML和LibSBMLSim。然后我制作了如下c文件:

/* Example C, C++ code */
#include "libsbmlsim/libsbmlsim.h"
int main(void) {
  /*
   * Simulate sbml.xml to time=20 with dt=0.1, print_interval=10
   * by 4th-order Runge-Kutta Method.
   */
  myResult *r = simulateSBMLFromFile("sbml.xml", 20, 0.1, 10, 0, MTHD_RUNGE_KUTTA, 0);
  write_csv(r, "result.csv"); /* Export simulation result as CSV file */
  free_myResult(r);           /* Free Result object */
  return 0;
}

并执行了“gcc test.c-o test”,但出现了错误。错误消息如下:
Undefined symbols for architecture x86_64:
  "_free_myResult", referenced from:
      _main in test-f56b85.o
  "_simulateSBMLFromFile", referenced from:
      _main in test-f56b85.o
  "_write_csv", referenced from:
      _main in test-f56b85.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我选中了/usr/local/include/libsbmlsim/libsbmlsim.h,这里指定了free_myResult函数。
我试了很多,但没用。请帮忙。

最佳答案

我选中了/usr/local/include/libsbmlsim/libsbmlsim.h,这里指定了free_myResult函数。
这只证实了原型的存在。但是在编译时,您需要知道使用什么库来查找这些符号。因此,您需要使用-lsbmlsim链接库,并可能指定使用-L搜索库的位置,以及使用-I指定头文件的位置——所有这些都在命令行中。
或者可以使用Makefile。查看libsbmlsim示例中提供的Makefile

关于c - LibSBMLSim(SBML =系统生物学标记语言)中出现“错误:体系结构x86_64的 undefined symbol ”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46475514/

10-11 18:32