私の最初のプラグインを外部アプリケーション用に書き込むと、大きな障害が発生しました。 プラグインはDLLファイルとしてロードされます(Linuxの場合はSO) データベースへの接続を試みますが、他のコンパイルが必要です。 はどこでも、与えられたコマンドを使用してアプリケーションをコンパイルする必要があることを記述します。ライブラリからmysqlに接続することは可能ですか?
gcc exa_7.c -o exa_7 -std=c99 `mysql_config --cflags --libs'
コマンドが最も正しいですが、私は属性に組み合わせることはできません。-c -fPIC
私は火のコードにしようとするとMYSQLのために必要な属性を渡さず、それは私にエラーがたくさん発生します
dllmain.c:46:5: error: unknown type name ‘MYSQL’; did you mean ‘MYSQL_XID’?
MYSQL *MySQLConRet;
^~~~~
MYSQL_XID
dllmain.c:47:5: error: unknown type name ‘MYSQL’; did you mean ‘MYSQL_XID’?
MYSQL *MySQLConnection = NULL;
^~~~~
MYSQL_XID
dllmain.c:74:5: error: unknown type name ‘MYSQL_RES’; did you mean ‘MYSQL_XID’?
MYSQL_RES *mysqlResult = NULL;
^~~~~~~~~
MYSQL_XID
dllmain.c:90:6: error: unknown type name ‘MYSQL_ROW’; did you mean ‘MYSQL_XID’?
MYSQL_ROW mysqlRow;
^~~~~~~~~
MYSQL_XID
dllmain.c:91:6: error: unknown type name ‘MYSQL_FIELD’; did you mean ‘MYSQL_XID’?
MYSQL_FIELD *mysqlFields;
^~~~~~~~~~~
MYSQL_XID
私のリストが含まれています:
をこれを解決する方法はありますか?
// EDIT:#include <mysql/mysql.h>
ため 削除コメントは今、私はコマンドでそれをコンパイル:gcc -pthread -c -fPIC -o test.o dllmain.c
コンパイルは(エラーなし)が正しく実行されますが、プログラムを実行するときには、メッセージを取得します。undefined symbol: mysql_init
たぶん、問題はコードにある?:
MYSQL *MySQLConRet;
MYSQL *MySQLConnection = NULL;
MySQLConnection = mysql_init(NULL);
MySQLConRet = mysql_real_connect(MySQLConnection,
hostName,
userId,
password,
DB,
0,
NULL,
0);
if (MySQLConRet == NULL) {
printf(mysql_error(MySQLConnection));
exit(1);
}
なぜの '#include 'がコメントアウトされていますか? –
duskwuff
あなたはそうです。私の間違いXD しかし、まだ適切に動作していないmysql。コンパイルは現在実行中ですが、起動時にエラーが発生します:** undefined symbol:mysql_init ** – Dave