Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.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++;如何在def文件中指定名称空间_C++_Dllexport - Fatal编程技术网

C++ C++;如何在def文件中指定名称空间

C++ C++;如何在def文件中指定名称空间,c++,dllexport,C++,Dllexport,“TestDLL.h” 我正在尝试通过def文件导出dll函数。有两个名称相同但命名空间不同的函数。我这样编写def文件: 库“TestDLL” 出口 HelloWorld@1 visual studio显示“错误LNK2001:未解析的外部符号HelloWorld”。我找不到任何关于如何在def文件中指定名称空间的有用信息。我想知道如何解决这个问题。非常感谢您的帮助。Def文件必须包含修饰名称。(即编译器和链接器看到的函数名) 您可以阅读上的详细信息,但以下是相关部分: 如果您在C++文件

“TestDLL.h”

我正在尝试通过def文件导出dll函数。有两个名称相同但命名空间不同的函数。我这样编写def文件:

库“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();
}