Я пытался использовать mysql-connector-c ++ с G-WAN 4.3.14, вот мой оригинальный исходный код:
//#define USE_GWAN
#include<cstdio>
#include<iostream>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
using namespace std;
#ifdef USE_GWAN
#include "gwan.h"#pragma link mysqlcppconn
#define print(x) xbuf_cat(get_reply(argv),x)
#else
#define print(x) printf(x)
#endif
int main(int argc,char** argv) {
try {
sql::Driver *driver = get_driver_instance();
sql::Connection *con = driver->connect("tcp://127.0.0.1:3306", "secret", "secret");
print("ok\n");
delete con;
} catch (sql::SQLException &e) {
print("err\n");
}
return 200;
}
Это нормально работает, когда я попытался скомпилировать его нормально:
g++ -lmysqlcppconn test.cpp
Но когда я раскомментирую // # define USE_GWAN и попробую его в G-WAN, он показывает:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Warning: test.cpp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/asd/gwan_linux64-bit/0.0.0.0_8088/#0.0.0.0/csp/test.cpp:
In function 'int main(int, char**)':
/csp/test.cpp:11:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#define print(x) xbuf_cat(get_reply(argv),x)
^
/csp/test.cpp:20:5: note: in expansion of macro 'print'
print("ok\n");
^
/csp/test.cpp:11:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#define print(x) xbuf_cat(get_reply(argv),x)
^
/csp/test.cpp:23:5: note: in expansion of macro 'print'
print("err\n");
^
8|#ifdef USE_GWAN
9| #include "gwan.h"10| #pragma link mysqlcppconn
11! #define print(x) xbuf_cat(get_reply(argv),x)
12|#else
13| #define print(x) printf(x)
14|#endif
15|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Linking test.cpp: undefined symbol: get_driver_instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/asd/gwan_linux64-bit/0.0.0.0_8088/#0.0.0.0/csp/test.cpp:
In function 'int main(int, char**)':
/csp/test.cpp:11:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#define print(x) xbuf_cat(get_reply(argv),x)
^
/csp/test.cpp:20:5: note: in expansion of macro 'print'
print("ok\n");
^
/csp/test.cpp:11:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
#define print(x) xbuf_cat(get_reply(argv),x)
^
/csp/test.cpp:23:5: note: in expansion of macro 'print'
print("err\n");
^
8|#ifdef USE_GWAN
9| #include "gwan.h"10| #pragma link mysqlcppconn
11! #define print(x) xbuf_cat(get_reply(argv),x)
12|#else
13| #define print(x) printf(x)
14|#endif
15|To run G-WAN, you must fix the error(s) or remove this Servlet.
все библиотеки установлены правильно
/usr/lib/libmysqlclient.a
/usr/lib/libmysqlclient.so -> libmysqlclient.so.18*
/usr/lib/libmysqlclient.so.18 -> libmysqlclient.so.18.0.0*
/usr/lib/libmysqlclient.so.18.0.0*
/usr/lib/libmysqlclient_r.a -> libmysqlclient.a
/usr/lib/libmysqlclient_r.so -> libmysqlclient.so*
/usr/lib/libmysqlclient_r.so.18 -> libmysqlclient.so*
/usr/lib/libmysqlclient_r.so.18.0.0 -> libmysqlclient.so*
/usr/lib/libmysqlcppconn.so -> libmysqlcppconn.so.7*
/usr/lib/libmysqlcppconn.so.7 -> libmysqlcppconn.so.7.1.1.3*
/usr/lib/libmysqlcppconn.so.7.1.1.3*
/usr/lib/libmysqld.a
/usr/lib/libmysqld.so -> libmysqld.so.18*
/usr/lib/libmysqld.so.18*
/usr/lib/libmysqlservices.a
Что-нибудь, что я должен добавить, чтобы использовать mysql-connector-c ++ с G-WAN?
У вас нет ошибки компиляции или компоновщика, у вас просто есть предупреждение.
Итак, вы должны быть в состоянии запустить свой скрипт.
[ОБНОВИТЬ]Кроме того, в вашем C ++ скрипте #pragma ссылка директивы определяют библиотеки без двойных кавычек. Во всех примерах G-WAN с использованием директив прагмы используются двойные кавычки, что, кстати, обязательно для строк в стандарте C:
#pragma link "pqxx"#pragma link "pq"