Connector / C ++编译错误

时间:2010-06-14 20:57:12

标签: c++ mysql

当我编译包含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

任何想法?

2 个答案:

答案 0 :(得分:0)

我想要做的第一件事就是将有问题的代码包装在try / catch中,看看它是否会抛出异常,你可以从中收集一些信息......

答案 1 :(得分:0)

引用Connector/C++ wiki

  

很抱歉,我们无法正式支持Microsoft Visual Studio 2003及更高版本之外的其他编译器。

我猜你的第一个症状的原因是Connector / C ++的平台检测代码正在检查它是否是为Windows构建的,并且假设你使用的是不支持stdint.h的Visual C ++,所以它有typedef来填写这种情况。稍后它会#include stdint.h(也许是因为它还检测到它是由g ++构建的),从而导致你的类型冲突错误。

我不知道你的另一个问题,但它可能是因为他们不试图支持MinGW这一事实。

您可以采取以下措施来解决此问题:

  1. 端口连接器/ C ++到MinGW。它是开源的,你有代码。

  2. 切换到MySQL++,它支持MinGW开箱即用。请参阅tarball中的README-MinGW.txt。

  3. 切换到Visual C ++。您可以从Microsoft下载limited but functional and free (as in beer)版本的应该足以使用Connector / C ++的版本。