2

在我的公司,我们使用.def文件来指定需要导出的符号。(我希望我可以使用更现代和自动化的技术,不幸的是,那些决定生活在八十年代的人)。

写一个.def文件,使用手动复制粘贴既无聊又容易出错,但到目前为止我可以忍受它。

但是,我需要为.defDLL 的 64 位版本编写一个类似的文件。几个函数的名称装饰发生了变化,我想知道是否有一种方法可以.def从 32 位版本生成 64 位版本的文件。

您知道任何可能对我有帮助的工具吗?这甚至是现实的吗?我真的不想再手动一次了。欢迎任何解决方案,即使是涉及编写我自己的工具的解决方案。

谢谢你。

4

2 回答 2

2

我可能会 __declspec(dllexport) 我想要的符号,编译,然后在生成的 DLL 上运行 dumpbin /exports 以获取损坏的名称,然后您可以删除 __declspec 并制作一个 .def 文件。

于 2011-01-05T15:26:27.477 回答
1

告诉你的老板回到80年代。说真的,这不是导出符号名称的可移植方式。如果 C++ 编译器更改名称修饰方案怎么办?然后你必须重新做这个(jcopenha 说的)。如果发生这种情况时你不在那里工作怎么办?另一个可怜的灵魂是否将不得不花费宝贵的时间来找出什么以及如何去做?我会尝试说服老板使用__declspec(dllexport). 它现在可以节省时间,将来也可能节省时间。

我假设您正在导出类和重载函数。如果你不是,那么我会用 C 名称导出函数。这些名字没有被破坏,也不会改变。

于 2011-01-05T17:32:01.427 回答