私はCLIONコードエディタでsimgridを使用してマスターワーカーアプリケーションを実装したいと思います。 は、私はそのようなCMakeLists.txtを持っている:SimGrid。 msg.hからインポートされた関数への未定義の参照
project(FirstAgent)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.c)
add_executable(FirstAgent ${SOURCE_FILES})
のmain.cの構造は以下の通りです。 MSG_init()
、MSG_main
などはsimgrid/msg.hの関数です。 (私は機能を左クリック+ CTRL場合simgrid/msg.gが開かれるの対応する機能):
#include <stdio.h>
#include <simgrid/msg.h>
int main(int argc, char *argv[]){
MSG_init(&argc, argv);
MSG_function_register("master", master);
MSG_create_environment("platform.xml");
MSG_launch_application("deployment.xml");
MSG_main();
return 0;
}
int worker(int argc, char *argv[]){...}
int master(int argc, char *argv[]){...}
しかし、私はsimrid/msg.hからインポート機能が認識することはできません。それはエラーを与えます:
/home/ken/CLionProjects/FirstAgent/main.c:10: undefined reference to `sg_version_check'
/home/ken/CLionProjects/FirstAgent/main.c:10: undefined reference to `MSG_init_nocheck'
/home/ken/CLionProjects/FirstAgent/main.c:12: undefined reference to `MSG_function_register'
/home/ken/CLionProjects/FirstAgent/main.c:13: undefined reference to `MSG_function_register'
/home/ken/CLionProjects/FirstAgent/main.c:15: undefined reference to `MSG_create_environment'
/home/ken/CLionProjects/FirstAgent/main.c:16: undefined reference to `MSG_launch_application'
/home/ken/CLionProjects/FirstAgent/main.c:18: undefined reference to `MSG_main'
...
それを避けるためにプロジェクトを正しく設定しますか?
UPD
target_link_libraries(FirstAgent simgrid)
を追加した後だけエラーが残っている:
/home/ken/CLionProjects/FirstAgent/main.c:10:あなたの場合
`sg_version_check'
collect2: error: ld returned 1 exit status
make[3]: *** [FirstAgent/FirstAgent] Error 1
make[2]: *** [CMakeFiles/FirstAgent.dir/all] Error 2
make[1]: *** [CMakeFiles/FirstAgent.dir/rule] Error 2
make: *** [FirstAgent] Error 2
msg.hは明らかにライブラリファイルではなく、ヘッダファイルです。 –