使用DEF从Visual Studio 2010中的DLL导出函数

时间:2013-01-18 15:44:28

标签: c++ visual-studio-2010 dll

我继承了一个庞大的C ++ 多项目解决方案,其中包含许多动态库但没有任何

__declspec(dllexport)

learned一个人不一定要插入任何 dllexport (会有很多工作)但是那个人可以另外使用 .def 文件相应的 .dll

为了尝试我从here构建了一个“DLL Hello World”项目,从标题中删除了 dllexport 并且......拼命地失败了。在已经cited页面的文字中,我的关键问题是如何

"[..] use the .def file when building the DLL."

我的 .def 文件是(我只使用添加方法尝试代码):

LIBRARY   MathFuncsDll
EXPORTS 
?Add@MyMathFuncs@MathFuncs@@SANNN@Z

如何在Visual Studio 2010中构建DLL以便导出添加方法时使用它?

1 个答案:

答案 0 :(得分:12)

在这个问题面前过了半天之后,我找到了解决方案:它被描述为here

使用我自己的话继续使用VS2010中的 .def 文件继续符号导出过程

  1. 告诉VS2010编译动态库(.dll)。这是在图书馆项目的属性页中完成的。
  2. 使用mangled (decorated) names制作模块定义文件(.def)(至少当您的语言是C ++时)。如果您使用 dllexport 您可以将已导出的.dll符号显示为described here。如果您尚未导出任何内容,请参阅this发布。
  3. 将.def添加到属性页中的库定义。
  4. 编译
  5. 通过打开相关文件,例如Dependency Walker验证您工作的正确性,例如: .EXE 。您应该在依赖文件下面的依赖关系树中看到刚刚编译的库。应该没有错误或警告,例如没有红色
  6. 如果您对 .def 文件有其他疑问,请留意终点“模块定义文件”