From: Bernard de C. <ber...@ho...> - 2004-01-12 09:59:13
|
Hi, I have not fun with dll. Sometimes it is needed. At my understanding, __stdcall is needed in DLLs. Also allocation/deallocation of data in and out dlls, may be different too. There are interesting tutorials on codeprojects, explaining your possible problems. Bernard >From: Vetrov Maxim <mu...@ma...> >Reply-To: min...@li... >To: Min...@li... >Subject: [Mingw-users] dll.a linking headache >Date: Sun, 11 Jan 2004 23:49:53 +1000 > >Hi, > >Got error "The procedure entry point mysql_init@4 could not be located in >the dynamic link library libmySQL.dll" after starting test app. > >History: > >1. created .def and .a files from libmySQL.dll (compiled with VC++50, >__cdecl, 8-byte struct member alignment,multithreaded): > > pexports libmySQL.dll -o > libmySQL.def > dlltool -def libmySQL.def -dllname libmySQL.dll --output-lib libmySQL.a > >2. Got error about undef reference to the mysql_init@4 while compiling test >app that called that function. I read mailing lists and then I tried >different combinations of libmySQL.a location on the compile line without >any success. > >3. I read "Stdcall and DLL tools of MSVC and MinGW" article, but it says >that function@n should go with __stdcall and not with __cdecl!!! However, I >manually changed def file line from > >mysql_init @63 > >to > >mysql_init@4 @63 > >and recreated libmySQL.a. > >4. Test app compiled sucessfully, but I got error "The procedure entry ..." >(see the first line) when I ran it. > >I'll be glad to get any ideas what I have done wrong. > >Muxas > > > > > >------------------------------------------------------- >This SF.net email is sponsored by: Perforce Software. >Perforce is the Fast Software Configuration Management System offering >advanced branching capabilities and atomic changes on 50+ platforms. >Free Eval! http://www.perforce.com/perforce/loadprog.html >_______________________________________________ >MinGW-users mailing list >Min...@li... > >You may change your MinGW Account Options or unsubscribe at: >https://lists.sourceforge.net/lists/listinfo/mingw-users _________________________________________________________________ Utilisez votre MSN Messenger via votre GSM ! http://www.fr.msn.be/gsm/servicesms/messengerparsms |
From: Vetrov M. <mu...@ma...> - 2004-01-13 12:53:53
|
Hi, Really thank you, guys. I've been struggling with C++Mingw+MySQL for about two weeks with no actual results. I'm new to all of these (usually use Delphi or Perl and Sybase). Today, I at least compiled and run my test app without ANY error which is a holiday for me :-). Luke, thanks also for your previous answer, on "No object file from gcc", that time you was also right. Also, I have another question about this problem: Is there any way to get def file in form of: function@n @n and not in form of function @n (which is default)? Muxas |
From: Wu Y. <ad...@ne...> - 2004-01-14 06:08:05
|
It's nothing about "default" or not. It is __stdcall or __cdecl. Normal C/C++ programs use the __cdecl calling convention in Windows, while __stdcall is the "standard" calling convention for Windows system calls. The former form you provided uses the __stdcall convention, i.e. the function is declared like: void __stdcall function(int n); This one will generate the export form: function@4 The other "@n" (separated from the function with a space) has nothing to do with the calling convention. It is the cardinal number in the DLL. When an executable searches for a function in a DLL, it could either use the "name" (decorated function name, like "function@4") or the "Id" (the cardinal number). You might find it useful to read: http://mywebpage.netscape.com/yongweiwu/stdcall.htm Best regards, Wu Yongwei --- Original Message from Vetrov Maxim --- Hi, Really thank you, guys. I've been struggling with C++Mingw+MySQL for about two weeks with no actual results. I'm new to all of these (usually use Delphi or Perl and Sybase). Today, I at least compiled and run my test app without ANY error which is a holiday for me :-). Luke, thanks also for your previous answer, on "No object file from gcc", that time you was also right. Also, I have another question about this problem: Is there any way to get def file in form of: function@n @n and not in form of function @n (which is default)? Muxas |