首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

C++ 對接 MySQL C API 完整踩坑指南:從 VS 配置到 x64 連接實戰

     編輯:MySQL 綜合教學

C++ 對接 MySQL C API 完整踩坑指南:從 VS 配置到 x64 連接實戰

記錄 Visual Studio 下使用 MySQL C API(libmysql.lib)的完整配置流程、高頻鏈接錯誤(LNK2019)根因與 x64 平台遷移方案,附帶可直接編譯運行的最小化測試程式碼。

環境基線

  • MySQL 5.6(無 lib/opt 目錄,直接用 lib/)
  • Visual Studio 2019/2022
  • 專案預設 Win32,實際運行環境 x64

VS 專案屬性配置清單

  1. VC++ 目錄 → 包含目錄:添加 $(MYSQL_HOME)\include
  2. VC++ 目錄 → 程式庫目錄:添加 $(MYSQL_HOME)\lib
  3. 連結器 → 輸入 → 附加相依性:libmysql.lib; ws2_32.lib
  4. C/C++ → 代碼生成 → 執行階段程式庫:統一 MD 或 MDd,避免 CRT 衝突

高頻錯誤:LNK2019 無法解析 _mysql_init 等符號

1>main.obj : error LNK2019: 無法解析的外部符號 _mysql_server_init@12
1>main.obj : error LNK2019: 無法解析的外部符號 _mysql_init@4
1>main.obj : error LNK2019: 無法解析的外部符號 _mysql_real_connect@32
1>main.obj : error LNK2019: 無法解析的外部符號 _mysql_options@12

根因:專案平台為 Win32(x86),但 MySQL 庫與系統為 x64,導致調用約定(__stdcall 裝飾名)不匹配。

解決方案:切換至 x64 平台

  1. 專案右鍵 → 屬性 → 配置管理器
  2. 作用解決方案平台 下拉 → 新建 → 輸入/選擇 x64 → 複製設定自 Win32
  3. 重新建置,符號解析即通過

最小化驗證程式碼

#include 
#include 
#include 

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")

using namespace std;

int main() {
    MYSQL mydata;
    mysql_library_init(0, NULL, NULL);           // 初始化庫
    mysql_init(&mydata);                         // 初始化連接結構
    mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk"); // 字符集

    if (mysql_real_connect(&mydata, "localhost", "root", "1234", "demo", 3306, NULL, 0)) {
        cout << "database connection OK!" << endl;
    } else {
        cerr << "Connect failed: " << mysql_error(&mydata) << endl;
    }

    mysql_close(&mydata);
    mysql_library_end();
    return 0;
}

關鍵參數說明:mysql_real_connect(&mydata, "host", "user", "pwd", "db", port, unix_socket, client_flag),通常只需修改 host/user/pwd/db 四項。

常見編譯錯誤速查

錯誤原因對策
無法打開 stdafx.h預編譯頭未配置專案屬性 → C/C++ → 預編譯標頭 → 「不使用預編譯標頭」或正確指定
_AFXDLL 缺失 / MFC 衝突/MD 編譯但專案類型非 MFC定義 _AFXDLL 或改用非 MFC 專案模板
fatal error C1083: router.pch預編譯頭檔案遺失清理解決方案 → 重新建置,或刪除 .pch 手動重建

部署注意事項

  • 目標機需安裝 Visual C++ Redistributable 對應版本。
  • libmysql.dll 需放在 exe 同目錄或系統 PATH 中。
  • 生產環境建議啟用 MYSQL_OPT_RECONNECT 自動重連:mysql_options(&mydata, MYSQL_OPT_RECONNECT, &reconnect_flag);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved