gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 18:25:42 29 4
gpt4 key购买 nike

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

__declspec(dllexport)

learned一个人不一定必须插入任何 dllexport(这会很麻烦)但是除了相应的 .dll .def 文件em> 代替。

为了尝试,我从 here 构建了一个“DLL Hello World”项目,从 header 中删除了 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 文件导出符号的过程 用我自己的话:

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

如果您对 .def 文件有进一步的疑问,请查看终点“模块定义文件”

关于c++ - 使用 DEF 从 Visual Studio 2010 中的 DLL 导出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14402415/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com