从 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 会自动执行此操作。