Страница 4 из 4

Re: Имена функций в подцепляемой DLL.

Добавлено: 13 июл 2007, 13:56
Absurd
BBB писал(а):Здесь префикса, разумеется, нет. Но это уже не статическая линковка (Но я, разумеется, не возражаю, что через через GetProcAddress функция находится. Интерсено было понять, возможно ли при данных "условиях задачи" подлинковаться именно статически).
Да, писалась на MS VC (хотя на поставленный вопрос это никак не влияет).
"Отрезать" префикс и постфикс в экспортируемом имени удалось при помощи EXPORTS в DEF-файле.
Только что воспользовался полученным lib файлом и подлинковал dll статически.
Итого имеем:

1) Метод экспротирован без префикса и GetProcAddress(hDll, "func1") работает.
2) Побочно генерируемая lib библиотека абсолютно работоспособна.

Внимание, вопрос: Нахрен тебе было извращаться с обрезанием префикса?

Re: Имена функций в подцепляемой DLL.

Добавлено: 13 июл 2007, 14:00
BBB
Hawk писал(а):У меня никаких функций с префиксом линкер не видит если их в EXPORTS прописывать.

а так ругается, что нету такой функции
EXPORTS
ExpFunc = _ExpFunc@4
Возможно, не у тебя не было указано extern "C". Т.е., в любом случае ты "не угадал" внутреннее имя ф-ии, которое "создал" комплятор C++. "Железобетонный" способ узнать внутреннее имя - поискать контекстно в созданном obj-файле. Т.е. ищешь ExpFunc (так как эта часть уж всяко будет присутствовать в имени), а когда находишь, смотришь, что еще этот текст "окружает". Это и будет "внутреннее" имя, которое надо прописывать в DEF-файл, если использовать в нем конструкцию entryname=internalname