C++ C++;如何在def文件中指定名称空间
“TestDLL.h” 我正在尝试通过def文件导出dll函数。有两个名称相同但命名空间不同的函数。我这样编写def文件:C++ C++;如何在def文件中指定名称空间,c++,dllexport,C++,Dllexport,“TestDLL.h” 我正在尝试通过def文件导出dll函数。有两个名称相同但命名空间不同的函数。我这样编写def文件: 库“TestDLL” 出口 HelloWorld@1 visual studio显示“错误LNK2001:未解析的外部符号HelloWorld”。我找不到任何关于如何在def文件中指定名称空间的有用信息。我想知道如何解决这个问题。非常感谢您的帮助。Def文件必须包含修饰名称。(即编译器和链接器看到的函数名) 您可以阅读上的详细信息,但以下是相关部分: 如果您在C++文件
库“TestDLL”
出口
HelloWorld@1
visual studio显示“错误LNK2001:未解析的外部符号HelloWorld”。我找不到任何关于如何在def文件中指定名称空间的有用信息。我想知道如何解决这个问题。非常感谢您的帮助。Def文件必须包含修饰名称。(即编译器和链接器看到的函数名) 您可以阅读上的详细信息,但以下是相关部分: 如果您在C++文件中导出函数,则必须将修饰名放入.DEF文件中,或者使用Extn“C”定义标准C链接的导出函数。如果需要将修饰的名称放置在.def文件中,可以使用DUMPBIN工具或使用linker/MAP选项获取它们 就个人而言,我更喜欢使用
/MAP
。我发现这比使用瑞士军刀DUMPBIN要简单得多
作为参考,这里有一个指向修饰名称文档的链接。在我的示例文件中,如何编写def文件?你能为我写一个def文件演示吗?这两个名称空间位于同一个dll中。我不知道如何处理它。@Rhysol您需要使用/MAP选项编译DLL(或在.obj文件上使用DUMPBIN),以便了解这些函数的编码名称。我们不能从这里为您这样做。谢谢,我将对/MAP进行一些研究
namespace atest
{
void HelloWorld();
}
namespace btest
{
void HelloWorld();
}