2017-11-16 9 views
0

私の最初のプラグインを外部アプリケーション用に書き込むと、大きな障害が発生しました。 プラグインは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); 
} 
+0

なぜの '#include 'がコメントアウトされていますか? – duskwuff

+0

あなたはそうです。私の間違いXD しかし、まだ適切に動作していないmysql。コンパイルは現在実行中ですが、起動時にエラーが発生します:** undefined symbol:mysql_init ** – Dave

答えて

0

<mysql/mysql.h>は含まれていません。その行のコメントを外します。このファイルは、MySQL APIを使用するために必要です。 <mysql/my_global.h>は、共通のシステムヘッダファイルを組み込み、ユーティリティマクロを定義するために使用される内部ヘッダーです。ではなく、の代わりに<mysql/mysql.h>の代わりに使用することができます。

関連する問題