Как правильно изменить файл .def в программе Visual C ++ 6? - PullRequest
0 голосов
/ 21 марта 2011

Я занимаюсь обслуживанием проекта C ++ 6.0, который использует файл .def для обработки экспорта функций.Мне пришлось добавить пару методов экземпляра в определение класса, но я не знаю, как добавить эти методы в файл .def, чтобы они экспортировались.Каждая строка в разделе EXPORTS в файле .def выглядит примерно так: ?MethodName@ClassName@@AStringOfLetters, возможно, с @Z в конце, без какой-либо причины, которую я не могу понять.Я предполагаю, что строка букв в некотором роде соответствует прототипу метода, но я не могу найти документацию, которая описывает кодировку.У методов, которые я добавил, нет прототипа, который точно соответствует ни одному из существующих методов.

Допустим, мои новые прототипы методов выглядят так:

  short ClassName::Foo1(const short, const unsigned int, const short, const unsigned int *);
  short ClassName::Foo2(const short, const unsigned int, short *, unsigned int *);

Что мне нужно добавитьв файл .def, чтобы сделать мой компоновщик счастливым и экспортировать методы?

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

Вы экспортируете искаженные символы C ++. Я бы временно добавил перед ними __declspec(dllexport) и затем загрузил бы DLL в нечто вроде Dependency Walker, или использовал бы dumpbin, чтобы посмотреть, что экспортируется. Это даст вам искаженный символ для новых функций, а затем вы можете добавить его в файл .def и удалить __declspec.

0 голосов
/ 03 ноября 2014

Чтобы получить искаженное имя для ваших новых функций, просто закомментируйте реализацию и постройте проект.Таким образом, вы получите ошибку, показывающую искаженное имя вашей новой функции.Обновите ваш файл def этим новым искаженным именем.

...