【发布时间】:2021-01-08 02:17:57
【问题描述】:
我正在尝试使用 MINGW 在 Windows 上构建 DLL。
可以在以下位置找到一个非常好的摘要(在我看来): https://www.transmissionzero.co.uk/computing/building-dlls-with-mingw/
甚至还有一个基本项目可用于本次讨论: https://github.com/TransmissionZero/MinGW-DLL-Example/releases/tag/rel%2Fv1.1
请注意,此项目中存在一个外观错误,这将导致它无法立即使用:Makefile 没有创建“obj”目录 - 调整 Makefile 或手动创建它。
所以这是真正的问题。 如何更改 Windows DLL 名称,使其与实际的 DLL 文件名不同?? 本质上,我试图在 Windows 上实现,这里在 Linux 上很好地描述了效果: https://www.man7.org/conf/lca2006/shared_libraries/slide4b.html
最初我尝试更改用于创建 DLL 的资源文件中的“InternalName”和“”OriginalFilename”,但这不起作用。
在第二步中,我尝试在执行最终链接的命令上添加“-Wl,-soname,SoName.dll”,以更改 Windows DLL 名称。
但是,这似乎没有达到预期的效果(我使用的是 MingW 7.3.0,x86_64-posix-seh-rev0)。 有两件事让我这么说:
1/ 测试可执行文件仍然有效(我预计它会失败,因为它试图定位 SoName.dll 但找不到它)。
2/ "pexports.exe AddLib.dll" 产生以下输出,其中库名称未更改:
LIBRARY "AddLib.dll"
EXPORTS
Add
bar DATA
foo DATA
我做错了什么吗?也许我的期望错了?
感谢您的帮助! 大卫
【问题讨论】:
标签: gcc dll mingw mingw-w64 dllexport