въпрос за DLL

4 отговора 223 прегледа
#1

въпрос за DLL

Здравейте!
Имам следния проблем. Имам DLL в който трябва да имам функция със следната дефиниция:
extern "C" __declspec(dllexport) void WINAPI XXL(int param1, int param2) ;
проблема идва от WINAPI -> като го сложа компилатора ми експортва функцията като _XXL@8, а аз искам да си е експортаната както съм я декларирал, защото клиентската програма търси точно това име в DLL-a. В MSDN пичовете са обяснили, че можело да се направи с "appropriate linker options", но за съжаление не са дали пример как точно да стане това.

Ако някой има идея или решение ....

Предварително благодаря за помощта

Отговор
в отговор на darklord #2

Re: въпрос за DLL

Ами пробвай със STDAPI вместо WINAPI, мисля, че и във DEF файла трябваше да се напише ама не помня точно кога :)

Сигнатура!
Отговор
в отговор на Questor #3

Re: въпрос за DLL

проблема е че ми трябва точно WINAPI calling конвенцията. Ако не я сложа е наред, ама не можеш да си представиш как зрелищно си омазва стека :-)... а програмата клиент не мога да я пипам (dll е plugin за нея)

Отговор
в отговор на darklord #4

Re: въпрос за DLL

Имах преди време горе долу същия проблем. Общо взето не знам дали решението, което намерих е правилно... но на мен ми свърши работа.
Значи ако си с Visual Studio направи си един файл с разширение .def и вътре напиши следното:

LIBRARY BLA
EXPORTS
proc1 @1
proc2 @2
.....

като на LIBRARY пиши името на DLL то, proc1, proc2 и т.н. са ти имената на функциите, които export ваш, а @1, @2 и т.н. е реда в който ги export ваш ( в смисъл реда, в които са ти подредени прототипите в .h файла (тва ми винаги ми се е струвало много тъпо, ама като ги разместя и не работи...).
После взимаш .def файла и го add ваш в папката source на средата. После компилираш.

Отговор
в отговор на Zmei #5

Re: въпрос за DLL

Решението ти проработи. Благодаря. Мисля че ти дължа една бира...

Отговор