Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用SOCI C++;数据库库?_C++_Mysql_Database_Wrapper_Soci - Fatal编程技术网

C++ 如何使用SOCI C++;数据库库?

C++ 如何使用SOCI C++;数据库库?,c++,mysql,database,wrapper,soci,C++,Mysql,Database,Wrapper,Soci,我正试图在我的程序中实现soci,但我不知道如何实现。我在Linux上使用C++,在使用NETBeS的项目上。我按照中的步骤进行了安装,并尝试在我的项目中从/src/core复制文件soci.h,从/src/backends/mysql复制文件soci mysql.h,但出现编译错误(这些文件包括其他soci文件,但将所有文件复制到目录中是不合逻辑的…)。我已经读了几遍指南,但我不明白我做错了什么。示例仅包括这些文件 谢谢 编辑:我在回答下面的评论中提供了更多信息。我不知道我必须采取什么步骤来实

我正试图在我的程序中实现soci,但我不知道如何实现。我在Linux上使用C++,在使用NETBeS的项目上。我按照中的步骤进行了安装,并尝试在我的项目中从/src/core复制文件soci.h,从/src/backends/mysql复制文件soci mysql.h,但出现编译错误(这些文件包括其他soci文件,但将所有文件复制到目录中是不合逻辑的…)。我已经读了几遍指南,但我不明白我做错了什么。示例仅包括这些文件

谢谢


编辑:我在回答下面的评论中提供了更多信息。我不知道我必须采取什么步骤来实施社会投资

该页面上的相关位为

当在没有参数的情况下运行配置脚本时,流程的其余部分将使用
/usr/local/include/soci
作为soci头文件的默认目标,并使用
/usr/local/lib
作为库文件的默认目标

现在/Ur/Prime/IsCube应该在默认的包含路径中(例如,尝试一些代码,比如代码> Gcc-C-V+X+C++/DEV/NULL O/DEV/NULL < /代码>查看您的安装使用的列表),因此可以使用

#include <soci/soci.h>
#include <soci/soci-mysql.h>
#包括
#包括

然后需要将库添加到链接步骤中。看起来您将同时拥有库的静态版本和共享版本。您需要将
-lsoci\u core-lsoci\u mysql
添加到链接步骤中;但是,如果这不起作用,那么您还需要指定/usr/local/lib作为搜索目录,即
-L/usr/local/lib-lsoci\u core-lsoci\u mysql
。(同样,它可能已经存在了,但是您可以使用
gcc-print search dirs
)但是,问题是如果您使用的是共享版本,并且/usr/local/lib不在您的分发库搜索路径中(请参见/etc/ld.so.conf和/或/etc/ld.so.conf.d/*),那么它将无法在运行时找到共享库。您需要使用链接器开关
-rpath
在库的路径中硬编码,或者像以前一样或在您的环境中将/usr/local/lib添加到系统范围的搜索路径(变量
LD\u library\u path
)。我不知道最好的办法是——我建议 -RPATA/<代码>,以避免一般修改系统,尽管如果你在/Urr/Pers/LIB中构建了很多库,添加它可能是有意义的。

< P>我在执行<代码> session SQL时,在C++程序上得到了相同的<强> >不加载后端<强>错误。"mysql://db=...)

我找到了一个解决方案(至少在我的Ubuntu 11.04上)。只要做:

sudo -i ln -s /usr/lib/libsoci_mysql-gcc-3_0-3.0.0.so /usr/lib/libsoci_mysql.so
SOCI library似乎在搜索文件
/usr/lib/libsoci_mysql。因此
不在系统中,如果您链接到库
/usr/lib/libsoci_mysql-gcc-3_0-3.0.0,请购买。因此
它在系统中工作(我认为debian/ubuntu会将文件名从原来的名称更改为其他名称,但它会产生副作用,因为SOCI库会在其中搜索原始名称)

我使用BASH环境变量<代码> LD*Debug =文件< /C> >运行C++的二进制文件。
希望有帮助。

您是否确实运行了
make install
?不需要将头文件复制到项目目录。我确实运行了该命令。如果我不复制这些文件,编译器会给出一个错误,说明找不到文件soci.h和soci mysql.h。我只是从文档中的一个示例复制了以下内容:[code]#include“soci.h”#include“soci mysql.h”[/code]但它不起作用,编译器说那些文件不存在,所以我试图从soci包中复制它们。库引发异常“无法找到后端mysql的共享库”甚至将/usr/local/lib指定为搜索目录和-rpath,但我可以通过将三个mysql后端文件复制到项目目录来解决这个问题。谢谢!嗯,我可能弄错了:您可能只需要在
-lsoci\u core
中链接,然后它就会打开mysql库本身?奇怪的是,它无法找到libary,虽然,因为它会知道/usr/local/lib将是查看构建时的地方。抱歉,我不知道soci特别推荐什么更好的方法,但很高兴你让它工作了!不,我刚刚尝试过,没有-lsoci_mysql选项它就不能工作。我不知道为什么,但soci也尝试打开mysql后端库。我在google上搜索previus错误时找到了发生这种情况的文件:PD:你能告诉我如何放置“代码标签”吗在注释上?Neast-从该文件中,看起来您还可以将环境变量
SOCI_BACKENDS_PATH
设置为/usr/local/lib。当然,您可以在注释中用backticks`环绕代码。我也看到人们以某种方式链接文本,但我不知道如何做,抱歉。