| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Экспортирование функций DLL |
| Автор: Superklug 28.10.2010, 07:39 | ||
| Доброго времени суток! Пишу DLL. Необходимо использовать __stdcall, однако при этом экспортируемые функции декорируются... Т.е. функцию int Sum(int, int) придется вызывать с помощью GetProcAddress как _Sum@8. Думал extern "C" исправит ситуацию, но ничего не изменилось. Как можно экспортировать функции с недекорированными именами не прибегая к использованию DEF-файлов? Сейчас я пишу так:
Что нужно изменить? |
| Автор: borisbn 28.10.2010, 08:14 |
| сталкивался с такой проблемой. Обходил либо DEF-файлами, либо тип вызова указывал __cdecl. В обоих случаях экспортируется без декорирования |
| Автор: Superklug 28.10.2010, 08:23 | ||||
borisbn, я создал DEF-файл. Вроде экспортируются функции без декорирования. Но похоже я их использую как-то неправильно... Видимо нужно указывать __stdcall, но я не знаю как. Сейчас пишу вот так:
Все ли я правильно делаю? hLib и func не NULL, т.е. вроде все нормально, но при вызове возникает ошибка. Либо у меня в библиотеке что-то не так, либо вызываю неправильно... Видимо надо так:
|
| Автор: GremlinProg 28.10.2010, 09:24 |
ничего при импорте просто поменять dllexport на dllimport, за декорирование отвечает еще и extern, так что если импорт был без него, естественно ничего не получится |
| Автор: GremlinProg 28.10.2010, 10:10 | ||||
для my.dll:
для my.exe:
|
| Автор: icecrashldr 28.10.2010, 10:30 | ||||
Вы вызываете функция как __cdecl (дефолт значения для компилира) а надо как __stdcall http://msdn.microsoft.com/en-us/library/984x0h58%28v=VS.80%29.aspx
Да надо так..
|
| Автор: Superklug 28.10.2010, 15:14 |
| GremlinProg, я не могу пользоваться lib файлом... icecrashldr, спасибо! Так вроде все работает... |