這些天想調試erlang的nif調用c cpi 所以就
下載源碼了,主要想生成一個my
sql_nif.dll鏈接庫。
win下:
解壓源碼出來,lib目錄下 lib
MySQL.dll、lib
MySQL.lib、my
sqlclIEnt.lib三個文件,覺得挺奇怪的,,然後詢問了達達同事也gg了一下,於是發現了如果使用鏈接libmysql.lib那麼必須在生成dll同目錄下有libmysql.dll。如果使用MySQLclIEnt.lib,,那麼代碼必須加上鏈接
#pragma comment(linker,”/nodefaultlib:LIBCMT.lib”)
#pragma comment(linker,”/nodefaultlib:MSVCRTD.lib”)。
然後vs2010配置屬性就可以生成MySQL_nif.dll了。。
在Linux下:
比較簡單了,按以下編譯即可。
gcc -fPIC -shared -o mysql_nif.so mysql_nif.c -I /usr/local/mysql/include/mysql -L /usr/local/mysql/lib/mysql -l MySQLclIEnt -I /usr/local/lib/erlang/erts-5.8/include