2017-09-28 17 views
1

C言語でLibSBMLSimをapiとして使用しようとしました。私はhttps://fun.bio.keio.ac.jp/software/libsbmlsim/を参照すると、私は以下のようなCファイル作らLibSBMLとLibSBMLSim.Thenの両方をインストールし :LibSBMLSim(SBML = Systems Biology Markup Language)で「ERROR:アーキテクチャx86_64の未定義シンボル」が発生しました

/* 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) 

私はfree_myResult機能が指定された、/usr/local/include/libsbmlsim/libsbmlsim.hをチェックします。 私はたくさん試しましたが、うまくいきません。助けてください。

+1

コマンドラインでライブラリを指定する必要があります。おそらく '-lSBMLSIM'ですが、' .a'や '.dylib'(Macの場合は疑わしい場合)や' .so'を探して、その名前から 'lib'接頭辞とサフィックス。 –

答えて

1

I checked /usr/local/include/libsbmlsim/libsbmlsim.h, there specified free_myResult function.

これは、プロトタイプが存在することを確認するだけです。しかし、コンパイルするときには、それらのシンボルを見つけるためにどのライブラリを使用するかを指示する必要があります。したがって、-lsbmlsimを使用してライブラリにリンクし、-Lを使用してライブラリを検索する場所と、-Iを使用するヘッダーファイルの場所をコマンドラインで指定する必要があります。

また、Makefileを使用することもできます。 libsbmlsimの例で提供されているMakefileを見てください。

+0

メイクファイルを参照すると実行できました。どうもありがとう。 – tbt

関連する問題