c – 使用DEF在Visual Studio 2010中从DLL导出函数

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

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

为了尝试我从here建立了一个“DLL Hello World”项目,从标题删除了dllexport并且……拼命地失败了.用已经cited页面的话来说,我的关键问题是如何

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

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

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

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

解决方法

在这个问题面前过了半天之后,我才找到了解决办法:它描述了 here.

使用我自己的话恢复VS2010中.def文件的符号导出过程:

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

如果您对.def文件有其他疑问,请留意终端“模块定义文件”.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...