从 Julia 调用 C/C++
Calling C/C++ from Julia
我正在尝试使用 C++ 为 Julia 编译动态库。
我在 windows 上使用 CLion。当我用 MinGW 编译时,ccall 与 dll 完美配合。
当我用 MSVC 编译时,Julia ccall 找不到该函数。有谁知道为什么以及如何解决这个问题?我必须使用 MSVC..
示例代码:
test.h
extern "C" int add2(int in);
test.cpp
#include "test.h"
int add2(int in){
return in+2;
}
找到答案了。 MSVC 编译器需要显式指令才能 output/input extern "C" 函数。以下代码适用于 MSVC,并被 Julia 的 ccall 识别:
test.h
extern "C" __declspec(dllexport) int add2(int in);
test.cpp
#include "test.h"
int add2(int in){
return in+2;
}
为了导入一个 extern "C" 函数,可以使用:
__declspec(dllimport)
编辑:
这与编译器无关,但所有 dll 文件都需要。
显然 MinGW 会自动执行此操作。
我正在尝试使用 C++ 为 Julia 编译动态库。 我在 windows 上使用 CLion。当我用 MinGW 编译时,ccall 与 dll 完美配合。 当我用 MSVC 编译时,Julia ccall 找不到该函数。有谁知道为什么以及如何解决这个问题?我必须使用 MSVC..
示例代码:
test.h
extern "C" int add2(int in);
test.cpp
#include "test.h"
int add2(int in){
return in+2;
}
找到答案了。 MSVC 编译器需要显式指令才能 output/input extern "C" 函数。以下代码适用于 MSVC,并被 Julia 的 ccall 识别:
test.h
extern "C" __declspec(dllexport) int add2(int in);
test.cpp
#include "test.h"
int add2(int in){
return in+2;
}
为了导入一个 extern "C" 函数,可以使用:
__declspec(dllimport)
编辑: 这与编译器无关,但所有 dll 文件都需要。 显然 MinGW 会自动执行此操作。