въпрос за DLL
4 отговора
223 прегледа
въпрос за DLL
Здравейте!
Имам следния проблем. Имам DLL в който трябва да имам функция със следната дефиниция:
extern "C" __declspec(dllexport) void WINAPI XXL(int param1, int param2) ;
проблема идва от WINAPI -> като го сложа компилатора ми експортва функцията като _XXL@8, а аз искам да си е експортаната както съм я декларирал, защото клиентската програма търси точно това име в DLL-a. В MSDN пичовете са обяснили, че можело да се направи с "appropriate linker options", но за съжаление не са дали пример как точно да стане това.
Ако някой има идея или решение ....
Предварително благодаря за помощта
Имам следния проблем. Имам DLL в който трябва да имам функция със следната дефиниция:
extern "C" __declspec(dllexport) void WINAPI XXL(int param1, int param2) ;
проблема идва от WINAPI -> като го сложа компилатора ми експортва функцията като _XXL@8, а аз искам да си е експортаната както съм я декларирал, защото клиентската програма търси точно това име в DLL-a. В MSDN пичовете са обяснили, че можело да се направи с "appropriate linker options", но за съжаление не са дали пример как точно да стане това.
Ако някой има идея или решение ....
Предварително благодаря за помощта
Re: въпрос за DLL
Ами пробвай със STDAPI вместо WINAPI, мисля, че и във DEF файла трябваше да се напише ама не помня точно кога :)
Сигнатура!
Сигнатура!
Re: въпрос за DLL
проблема е че ми трябва точно WINAPI calling конвенцията. Ако не я сложа е наред, ама не можеш да си представиш как зрелищно си омазва стека :-)... а програмата клиент не мога да я пипам (dll е plugin за нея)
Re: въпрос за DLL
Имах преди време горе долу същия проблем. Общо взето не знам дали решението, което намерих е правилно... но на мен ми свърши работа.
Значи ако си с Visual Studio направи си един файл с разширение .def и вътре напиши следното:
LIBRARY BLA
EXPORTS
proc1 @1
proc2 @2
.....
като на LIBRARY пиши името на DLL то, proc1, proc2 и т.н. са ти имената на функциите, които export ваш, а @1, @2 и т.н. е реда в който ги export ваш ( в смисъл реда, в които са ти подредени прототипите в .h файла (тва ми винаги ми се е струвало много тъпо, ама като ги разместя и не работи...).
После взимаш .def файла и го add ваш в папката source на средата. После компилираш.
Значи ако си с Visual Studio направи си един файл с разширение .def и вътре напиши следното:
LIBRARY BLA
EXPORTS
proc1 @1
proc2 @2
.....
като на LIBRARY пиши името на DLL то, proc1, proc2 и т.н. са ти имената на функциите, които export ваш, а @1, @2 и т.н. е реда в който ги export ваш ( в смисъл реда, в които са ти подредени прототипите в .h файла (тва ми винаги ми се е струвало много тъпо, ама като ги разместя и не работи...).
После взимаш .def файла и го add ваш в папката source на средата. После компилираш.