当我编译包含Connector / C ++标头的代码时,我收到以下错误:
c:\ qt \ 2010.03 \ mingw \ bin ../ lib / gcc / mingw32 / 4.4.0 /../../../../ include / stdint.h:27:错误:'int8_t '之前的声明为'typedef signed char int8_t'
c:\ qt \ 2010.03 \ mingw \ bin ../ lib / gcc / mingw32 / 4.4.0 /../../../../ include / stdint.h:31:错误:'int32_t '之前的声明为'typedef int int32_t'
c:\ qt \ 2010.03 \ mingw \ bin ../ lib / gcc / mingw32 / 4.4.0 /../../../../ include / stdint.h:32:错误:'uint32_t '之前的声明为'typedef unsigned int uint32_t'
我所做的就是:
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
现在我可以进入文件并注释掉那些给我错误的行:
//typedef signed char int8_t;
//typedef int int32_t;
//typedef unsigned uint32_t;
它编译,但是当我尝试运行mysql代码时:
sql::Driver *driver;
driver = get_driver_instance();
我得到了这个输出
test.exe退出,代码为-1073741515
任何想法?
答案 0 :(得分:0)
我想要做的第一件事就是将有问题的代码包装在try / catch中,看看它是否会抛出异常,你可以从中收集一些信息......
答案 1 :(得分:0)
很抱歉,我们无法正式支持Microsoft Visual Studio 2003及更高版本之外的其他编译器。
我猜你的第一个症状的原因是Connector / C ++的平台检测代码正在检查它是否是为Windows构建的,并且假设你使用的是不支持stdint.h的Visual C ++,所以它有typedef来填写这种情况。稍后它会#include stdint.h(也许是因为它还检测到它是由g ++构建的),从而导致你的类型冲突错误。
我不知道你的另一个问题,但它可能是因为他们不试图支持MinGW这一事实。
您可以采取以下措施来解决此问题:
端口连接器/ C ++到MinGW。它是开源的,你有代码。
切换到MySQL++,它支持MinGW开箱即用。请参阅tarball中的README-MinGW.txt。
切换到Visual C ++。您可以从Microsoft下载limited but functional and free (as in beer)版本的应该足以使用Connector / C ++的版本。