borland c++でMySQLデータベースへ接続したいのですが、
外部シンボル 'mysql_real_connect' が未解決
外部シンボル 'mysql_init' が未解決
外部シンボル 'mysql_close' が未解決
というエラーが出てしまいます。
******** 現状 ***********
(1) インクルードしているヘッダファイルは、
<my_global.h>
<mysql.h>
<my_sys.h>
です。
(2) ソースコードは、
conn = mysql_init(NULL);
if(mysql_real_connect(conn,opt_host_name,opt_user_name,opt_password,opt_db_name,opt_port_num,opt_socket_name,opt_flags) == NULL)
{
fprintf(stderr,"mysql_real_connect() failed\n");
mysql_close(conn);
exit(1);
}
mysql_close(conn);
exit(0);
といった感じです。
(3) implib を用いて、
libmySQL.lib から libmySQL.dll へ変換し、
実行したいソースと同じフォルダに置き、
リンクしています。
どなたか、ご回答よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
まず、libmySQL.lib は本当にプロジェクトに入っていますでしょうか(失礼します。
いや、これは時々あるので)次は、impdef で、dll から .def ファイルを作ってみてください。この .def ファイルは、テキストファイルですので、エディタ等で開けます。
ここで、.dll の中にある関数の一覧が得られます。
この関数の名前が、
'mysql_real_connect' や、'mysql_init' や 'mysql_close' であることを確認してみてください。
関数の名前に、一見意味不明の文字が付いていることがあります。これは、C++のリンケージ規約でコンパイルされた結果です。
この場合、以下の方法を試してみることになります。
1.おそらく、mysql.h の中に、 extern "C" の宣言があると思いますので、一度、この宣言をなくして試してみてください。
2.それでもだめな場合は、他のコンパイラ(Windows 環境なら、Microsoft か、Sygwin なら、Gcc)のC++でコンパイルしてありそうなので、該当のコンパイラを使うということになります。
3.もしも、limmySql.h のなかに、extern "C" がない場合、(これは、リンクエラーの関数名が、Cのリンケージ規約の関数名なので、可能性低いですが)関数プロトタイプの前に、 extern "C" をつけてみてください。
いずれにしても、.def ファイルを眺めると、何かわかるかもしれません。
No.1
- 回答日時:
状況は確かに、「リンクに失敗している」ですね。
タイプミスかも知れませんが、implib は、.dll から、.lib を生成するツールです。
もともと、libmySQL.dll があった場合に、これから、libmySQL.lib を生成します。
そして、プロジェクトに、他のソースファイルと一緒に、libmySQL.lib を追加しておきます。
これで、OKのはずですが。
この回答への補足
ご回答ありがとうございます。
ご指摘の通り、私のタイプミスでした。
implibでlibmySQL.lib を生成し、
それをリンクしています。
しかし、エラーが出てしまいます。
よろしければ、解決法などご教授ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL XamppでインストールしたMySQLのフォルダのWinRARでのバックアップについて 1 2022/06/22 18:55
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL MySQLでcreateが使えない MySQLを使ってデータベースを作ろうと思い、CREATE を使 3 2022/06/19 15:32
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
c言語でMySQLを利用するときの...
-
RPMのmysqlとmysql-serverの違い
-
MAMPでMySQLのパスが通らない
-
TeraTermでクエリを先読みして...
-
MySQLの地理情報の取り扱いにつ...
-
psqlでいう Ctrl+C
-
よくわかるPHPの教科書で勉強中...
-
MySQLで複数のマスターの受けは...
-
接続ができません
-
ERROR 1045 (28000) (using pas...
-
MySQLのテーブル作成でハイフン...
-
SQLのVARCHARとVARCHAR2の違い
-
参考書に従って入力したつもり...
-
MySQLカラム名は日本語と英数字...
-
INT型は金額の型に使用するべき...
-
【php+mysql】mysqlのレコード...
-
VBAで変数内に保持された二次配...
-
mysqlがインストールされている...
-
Float型の時の計算結果がおかしい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
RPMのmysqlとmysql-serverの違い
-
MySQLでAutoCommitをfalseにする
-
borland c++ によるMySQL への...
-
MySQL のコマンドが実行出来ま...
-
MySQLサーバーに接続でき...
-
xamppのMySQLが開かない
-
mysqlの画面から抜けられない
-
MAMPでMySQLのパスが通らない
-
データベースについて
-
mysqlのdatadirの変更について
-
windows7でのmysql ODBCの設定...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
MySQLカラム名は日本語と英数字...
-
ODP.NETのバージョン確認
-
旧filemakerで和暦(令和など)...
-
VBAで変数内に保持された二次配...
-
プライマリーキーの昇順でソー...
-
ERROR 1045 (28000) (using pas...
おすすめ情報