Конвертировать 32-битный файл .def в 64-битный - PullRequest
2 голосов
/ 05 января 2011

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

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

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

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 января 2011

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

1 голос
/ 05 января 2011

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

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

...