2016-08-04 58 views
1

基本思想如下: 沒有用於MATLAB的Cassandra驅動程序,但有C++ Driver。在VS12中創建項目,我可以查詢數據庫沒有問題。在MATLAB MEX函數中鏈接Cassandra/C++驅動程序庫

我在MATLAB中創建了一個MEX文件來調用網關C++函數從數據庫中獲取數據。使用MATLAB MEX: 1 - 編譯mex文件和網關功能正常工作,沒有問題。 2 - 包含文件和Cassandra.lib文件的路徑是正確的。

不過,在聯動階段,卡珊德拉類不能找到:

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

getFromCassandra.cpp:網關功能卡桑德拉 accessCassandra.cpp:MATLAB MEX文件調用getFromCassandraRes()在網關getFromCassandra。 CPP文件

的錯誤,我得到:

 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> > &)" 

我使用的是C++卡桑德拉驅動程序二進制文件爲我的64位窗口。 MATLAB版本:8.5.0.197613(R2015a) 卡桑德拉/ C++驅動程序:從http://datastax.github.io/cpp-driver/

你的幫助,最新的是讚賞。

回答

1

解決!

我試圖重建Windows上的Cassandra/C++驅動程序。最終需要安裝許多工具並且失敗。

但是,當我發現問題解決了:

在我的Visual Studio項目,我正在建立一個win32的,因此,用

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

但MATLAB正在建立一個64位! 所以,當我改變了路徑使用cassandra.lib的64位版本:

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

它的工作!

我希望這可以節省其他人花費的時間!