" TestDLL.h"
namespace atest
{
void HelloWorld();
}
namespace btest
{
void HelloWorld();
}
我尝试通过def文件导出dll函数。有两个具有相同名称的函数,但在不同的命名空间中。我写这样的def文件:
LIBRARY "TestDLL"
EXPORTS
HelloWorld @1
视觉工作室显示"错误LNK2001:未解析的外部符号HelloWorld"。我无法找到有关如何在def文件中指定命名空间的任何有用信息。我想知道如何解决这个问题。我很感激你的帮助。
答案 0 :(得分:3)
Def文件必须包含装饰名称。 (即编译器和链接器看到的函数名称)
您可以阅读Microsoft's site的详细信息,但这里是相关部分:
如果要在C ++文件中导出函数,则必须将修饰的名称放在.def文件中,或者使用extern“C”定义标准C链接的导出函数。如果需要将修饰后的名称放在.def文件中,可以使用DUMPBIN工具或使用链接器/ MAP选项获取它们
就个人而言,我更喜欢使用/MAP
。我发现它比使用DUMPBIN的瑞士军刀要简单得多。
供参考here是指一般装饰名称文档的链接。