這些天想調試erlang的nif調用c cpi 所以就下載源碼了,主要想生成一個mysql_nif.dll鏈接庫。
win下:
解壓源碼出來,lib目錄下 libmysql.dll、libmysql.lib、mysqlclient.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