2016-08-04 1 views
1

次のように基本的な考え方は次のとおりです。 MATLABにはカサンドラドライバはありませんが、C++ドライバがあります。 VS12でプロジェクトを作成すると、データベースに問題はありません。MATLAB MEX機能でカサンドラ/ C++ドライバライブラリをリンク

私は、データベースからデータを取得するためにゲートウェイC++の関数を呼び出すためにMATLABでMEXファイルを作成しました。 MATLAB MEXの使用: はMEXファイルおよびゲートウェイ機能を1-コンパイルすると問題なく正常に動作します。 2-ファイルとCassandra.libファイルをインクルードするパスが正しいです。

はさらに、リンク段階で、Cassandraのクラスが見つかりません:

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

getFromCassandra.cpp:カサンドラ accessCassandra.cppへのゲートウェイ機能:MATLAB MEXファイルがゲートウェイgetFromCassandraに()getFromCassandraResを呼び出します。 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> > &)" 

私は64ビットのためのC++カサンドラドライバのバイナリを使用しています窓。 MATLABバージョン:8.5.0.197613(R2015a) カサンドラ/ C++ドライバ:http://datastax.github.io/cpp-driver/

あなたの助けから最新のは大歓迎です。解決

答えて

1

Windows上でCassandra/C++ドライバを再構築しようとしました。それは、最後にインストールされ失敗した多くのツールが必要でした。

しかし、私が気づいたときに問題が解決されました:

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

を使用していた、私のVisual Studioプロジェクトで

が、私はこのように、Win32用の建物とされた。しかし、MATLABは、64ビットのために構築しました!私はcassandra.libの64ビットバージョンを使用するようにパスを変更したとき ので、:

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

それは働きました!

これは私がこれを追いかけるのに費やした時間を他の人に節約してくれることを願っています!

関連する問題