将32位.def文件转换为64位

时间:2011-01-05 15:16:17

标签: c++ visual-c++ function name-decoration

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

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

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

您是否了解任何可能对我有用的工具?这甚至是现实的吗?我真的不觉得我想再一次手工做。任何解决方案,即使是涉及编码我自己的工具的解决方案,都是受欢迎的。

谢谢。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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