Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 叮当声——”;“未找到符号”;链接时_C++_C_Clang - Fatal编程技术网

C++ 叮当声——”;“未找到符号”;链接时

C++ 叮当声——”;“未找到符号”;链接时,c++,c,clang,C++,C,Clang,我正试图用clang编译此源代码: extern "C" void __declspec(dllexport) TEST(int num) { return; } 问题是,在链接上,clang报告“无法导出\u测试:找不到符号” 然而,我找不到一种方法来防止叮当声弄坏名字 我一直在读到这是一个叮当响的错误,但很难相信他们现在还没有修复它 有什么想法吗?按clang生成的程序集文件的.drectve部分的内容包含: .section .drectve,"r" .ascii " -expo

我正试图用clang编译此源代码:

extern "C" void __declspec(dllexport) TEST(int num)
{
return;
}
问题是,在链接上,clang报告“无法导出\u测试:找不到符号”

然而,我找不到一种方法来防止叮当声弄坏名字

我一直在读到这是一个叮当响的错误,但很难相信他们现在还没有修复它


有什么想法吗?

按clang生成的程序集文件的
.drectve
部分的内容包含:

.section    .drectve,"r"
.ascii  " -export:_TEST"
虽然gcc本应如此:

.section    .drectve,"r"
.ascii  " -export:TEST"
您可以通过删除
\uu declspec(dllexport)
并创建一个文件
file.s
,其中包含要导出的符号,如下所示:

.section .drectve,"r"
    # list of symbols you want to export
    .ascii " -export:TEST"
在末尾保留一条空行,此处不显示

如果要导出符号,请添加
.ascii“-export:symbol\u NAME”
。现在,您可以使用以下工具进行编译:

clang++ file.cpp file.s -shared -o file.dll

它应该可以正常工作。

按clang生成的程序集文件的
.drectve
部分的内容包含:

.section    .drectve,"r"
.ascii  " -export:_TEST"
虽然gcc本应如此:

.section    .drectve,"r"
.ascii  " -export:TEST"
您可以通过删除
\uu declspec(dllexport)
并创建一个文件
file.s
,其中包含要导出的符号,如下所示:

.section .drectve,"r"
    # list of symbols you want to export
    .ascii " -export:TEST"
在末尾保留一条空行,此处不显示

如果要导出符号,请添加
.ascii“-export:symbol\u NAME”
。现在,您可以使用以下工具进行编译:

clang++ file.cpp file.s -shared -o file.dll

它应该可以正常工作。

您使用什么操作系统进行编译?我问这个问题是因为我注意到在Mac OS X及其Mach-O ABI上,所有符号都以
开头,而同样的编译器在Linux及其ELF格式上省略了
。您使用什么操作系统进行编译?我这样问是因为我注意到,在Mac OS X及其Mach-O ABI上,所有符号都以
开头,而同样的编译器在Linux及其ELF格式上省略了
。非常感谢,先生。非常感谢,先生。