digitalmars.D.learn - (coff)-Implib lib from dll
Hey guys, I'm trying to connect to my mysql-server on windows. I'm using the mysql binding from http://www.steinmole.de/d/ because as I know the DDBI project doesn't support D2. I followed the instructions on the site and first created the lib file with implib with the following command: "implib libmysql.lib libmysql.dll" (without "). Next, I changed the extern(C) statement in mysql.d to extern(Windows). Now... I create a simple application with the following source: module test; pragma(lib, "libmysql.lib"); import mysql; int main(string[] args) { MYSQL* mysql; mysql = mysql_init(null); mysql_close(mysql); return 0; } I'm trying to compile the source file by using the following command: "dmd -d test.d mysql.d" (without quotas). The result is the following: test.obj(test) Error 42: Symbol Undefined _mysql_init 4 test.obj(test) Error 42: Symbol Undefined _mysql_close 4 --- errorlevel 2 I also tried "dmd -d test.d mysql.d libmysql.lib" without any success. When I remove the extern-statement from mysql.d, I get similar errors. Note... I'm using the github-version 0.2.3 which was released last week. I think my mistake is the linking because the binding works on Linux. But... not on Windows - perhaps... anyone know how what I'm doing wrong? Thanks...
Jan 15 2011
Am 15.01.2011 17:07, schrieb %u:Hey guys, I'm trying to connect to my mysql-server on windows. I'm using the mysql binding from http://www.steinmole.de/d/ because as I know the DDBI project doesn't support D2. I followed the instructions on the site and first created the lib file with implib with the following command: "implib libmysql.lib libmysql.dll" (without "). Next, I changed the extern(C) statement in mysql.d to extern(Windows). Now... I create a simple application with the following source: module test; pragma(lib, "libmysql.lib"); import mysql; int main(string[] args) { MYSQL* mysql; mysql = mysql_init(null); mysql_close(mysql); return 0; } I'm trying to compile the source file by using the following command: "dmd -d test.d mysql.d" (without quotas). The result is the following: test.obj(test) Error 42: Symbol Undefined _mysql_init 4 test.obj(test) Error 42: Symbol Undefined _mysql_close 4 --- errorlevel 2 I also tried "dmd -d test.d mysql.d libmysql.lib" without any success. When I remove the extern-statement from mysql.d, I get similar errors. Note... I'm using the github-version 0.2.3 which was released last week. I think my mistake is the linking because the binding works on Linux. But... not on Windows - perhaps... anyone know how what I'm doing wrong? Thanks...Did you try to use the system flag ('/system') for implib which adds leading underscores? I had a similar problem and that solved it for me.
Jan 15 2011
I just used "implib libmysql.lib libmysql.dll /system" but it produces the same errors.
Jan 15 2011
Am 15.01.2011 17:46, schrieb nrgyzer:I just used "implib libmysql.lib libmysql.dll /system" but it produces the same errors.In the implib help it says: "implib [switches] libfile [ dllfile | deffile ]" I'm not sure but implib could be picky about where the switches are. Mafi
Jan 15 2011
Thanks, but didn't help to change to "implib /system libmysql.lib libmysql.dll" - some errors.
Jan 15 2011
Try this: implib /s libmysql.lib libmysql.dll Then change extern(Windows) to extern(C). (That's how I usually have it set up)
Jan 15 2011
This solved the problems, thanks - but, when the line "mysql = mysql_init(null);" produces an access violation.
Jan 15 2011