【发布时间】:2019-01-25 08:45:20
【问题描述】:
我正在尝试编译一个非常简单的 C/C++ 程序来调用 Julia 函数。按照您在 Julia 文档页面上找到的说明,我将链接路径设置为 /Users/william.calhoun/Desktop/romeo/lib/julia 以查找 libjulia.so,并将包含路径设置为 /Users/william.calhoun/Desktop/romeo/include/julia 以查找 julia.h
我有一个名为 test.c 的 C 文件,它运行以下代码:
#include <stdio.h>
#include "skeleton.h"
#include <julia.h>
int main(int argc, const char * argv[]) {
jl_init(NULL);
/* run julia commands */
jl_eval_string("print(sqrt(2.0))");
/* strongly recommended: notify julia that the
program is about to terminate. this allows
julia time to cleanup pending write requests
and run all finalizers
*/
jl_atexit_hook();
return 0;
}
但是这会产生以下错误:
Undefined symbols for architecture x86_64:
"_jl_atexit_hook", referenced from:
_main in test.o
"_jl_eval_string", referenced from:
_main in test.o
"_jl_init", referenced from:
_main in test.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
除了调用 Julia 源代码中正确定义的函数(希望如此)之外,我没有做任何事情。我究竟做错了什么?这似乎是最简单的例子,我想不通。
任何帮助将不胜感激!
【问题讨论】:
-
您需要明确链接到 Julia 库。您是这样做还是只是将链接器指向它的存储目录?
-
C 不是 C++ 不是 C。请选择正确的语言(我认为是 C)。
-
请不要在多个论坛中交叉发帖 (github.com/JuliaLang/julia/issues/12673)。在这两个地方回答问题的是同一个人。
-
我已经明确链接到 libjulia.dylib 并且正在使用 C(我只是引用了两者,因为你可以在两者中做同样的事情)。现在我得到 dyld: Library not loaded: @rpath/libjulia-debug.dylib Reason: Image not found 的错误