Вопрос

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

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

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

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

Спасибо.

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top