Конвертировать 32-битный файл.def в 64-битный

В моей компании мы используем .def файлы для указания символов, которые необходимо экспортировать. (Я бы хотел использовать более современную и автоматизированную технику, к сожалению, ребята, которые решили вернуться в восьмидесятые годы).

Написание .def Файл вручную, копирование-вставка вручную скучно и подвержено ошибкам, но пока я могу с этим жить.

Однако мне нужно написать подобное .def файл для 64-битной версии DLL. Изменение названия нескольких функций изменилось, и мне интересно, есть ли способ создать .def файл для 64-битной версии из 32-битной версии.

Вы знаете какой-нибудь инструмент, который может мне помочь? Это даже реально? Я действительно не чувствую, что хочу сделать это вручную еще раз. Любое решение, даже если оно включает в себя кодирование моего собственного инструмента, приветствуется.

Спасибо.

2 ответа

Решение

Я бы, вероятно, __declspec(dllexport) символы, которые я хотел, скомпилировать, а затем запустить dumpbin /exports в получившейся DLL, чтобы получить искаженные имена, а затем вы можете удалить __declspec и создать файл.def.

Скажи своему боссу вернуться в 80-е. Серьезно, это не переносимый способ экспорта имен символов. Что если компилятор C++ изменит схему искажения имени? Тогда вам придется делать это (что сказал jcopenha) снова и снова. Что делать, если вы не работаете там, когда это происходит? Неужели другой бедной душе придется потратить драгоценное время, чтобы выяснить, что и как это сделать? Я хотел бы убедить босса использовать __declspec(dllexport), Это сэкономит время сейчас и, возможно, время в будущем.

Я предполагаю, что вы экспортируете классы и перегруженные функции. Если нет, я бы вместо этого экспортировал функции с именами Си. Эти имена не искажены и не изменятся.

Другие вопросы по тегам