我正在尝试在clang中编译此源:
extern "C" void __declspec(dllexport) TEST(int num)
{
return;
}
问题是在链接上,clang报告“无法导出_TEST:符号未找到”
但是,我无法找到一种方法来防止诽谤名称
我一直在读这是铿锵的一个错误,但很难相信他们现在还没有解决它
有什么想法吗?
答案 0 :(得分:3)
clang生成的程序集文件的.drectve
部分的内容包含:
.section .drectve,"r"
.ascii " -export:_TEST"
虽然它应该和gcc一样:
.section .drectve,"r"
.ascii " -export:TEST"
您可以通过删除__declspec(dllexport)
并创建包含您要导出的符号的文件file.s
来解决此问题:
.section .drectve,"r"
# list of symbols you want to export
.ascii " -export:TEST"
在最后保留一个空行,此处不会显示。
如果您想要导出符号,请添加.ascii " -export:SYMBOL_NAME"
。现在你可以用:
clang++ file.cpp file.s -shared -o file.dll
它应该可以正常工作。