在MATLAB MEX函数中链接Cassandra / C ++驱动程序库

时间:2016-08-04 21:00:29

标签: c++ matlab cassandra

基本思路如下: MATLAB没有Cassandra驱动程序,但有C ++驱动程序。在VS12中创建项目,我可以查询数据库没有问题。

我在MATLAB中创建了一个MEX文件来调用网关C ++函数来从数据库中获取数据。使用MATLAB MEX: 1 - 编译mex文件和网关功能正常工作没有问题。 2 - 包含文件和Cassandra.lib文件的路径是正确的。

但是,在联动阶段,无法找到cassandra类:

mex ('-v',ipath_cassandra_code,ipath_cassandra, cSourceFile,'accessCassandra.cpp','-lcassandra','-lcassandra_static')

getFromCassandra.cpp:Cassandra的网关功能 accessCassandra.cpp:在网关getFromCassandra.cpp文件中调用getFromCassandraRes()的MATLAB mex文件

我得到的错误:

       Creating library getFromCassandra.lib and object getFromCassandra.exp
getFromCassandra.obj : error LNK2019: unresolved external symbol cass_cluster_new referenced in function "class
std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl getFromCassandraRes(char *,char *,int,int,class
std::vector<struct muStatsStruct,class std::allocator<struct muStatsStruct> > &)"

我正在为我的64位窗口使用C ++ Cassandra驱动程序二进制文件。 MATLAB版本:8.5.0.197613(R2015a) Cassandra / C ++驱动程序:http://datastax.github.io/cpp-driver/

的最新内容

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

解决!

我尝试在Windows上重建Cassandra / C ++驱动程序。它需要安装许多工具并在最后失败。

但是当我注意到这个问题时,问题就解决了:

在我的Visual Studio项目中,我正在为win32构建,因此正在使用

\cassandra-cpp-driver-2.4.2-win32-msvc120\lib'

但MATLAB正在为64位构建! 所以,当我改变路径以使用64位版本的cassandra.lib:

\cassandra-cpp-driver-2.4.2-win64-msvc120\lib'

有效!

我希望这可以节省其他人花费的时间来追逐这个!