基本思路如下: 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/
的最新内容感谢您的帮助。
答案 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'
有效!
我希望这可以节省其他人花费的时间来追逐这个!