2016-08-04 22 views
1

Die Grundidee ist wie folgt: Es gibt keinen Cassandra-Treiber für MATLAB, aber es gibt C++ - Treiber. Beim Erstellen eines Projekts in VS12 kann ich die Datenbank problemlos abfragen.Verknüpfung von Cassandra/C++ - Treiberbibliothek in MATLAB MEX-Funktion

Ich erstellte eine MEX-Datei in MATLAB, um die Gateway-C++ - Funktion aufzurufen, um Daten aus der Datenbank abzurufen. Verwenden von MATLAB MEX: 1-Compiling die mex-Datei und die Gateway-Funktion funktioniert problemlos. 2 - Der Pfad zum Einschließen von Dateien und Cassandra.lib-Dateien ist korrekt.

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

getFromCassandra.cpp: Gateway-Funktion zu Cassandra accessCassandra.cpp: MATLAB mex Aufruf der Datei getFromCassandraRes() in Gateway getFromCassandra

Noch an der Verknüpfungsstufe können die cassandra Klassen nicht gefunden werden. CPP-Datei

Der Fehler erhalte ich:

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

ich bin mit dem C++ Cassandra Binärtreiber für meine 64-Bit Fenster. MATLAB Version: 8.5.0.197613 (R2015a) Cassandra/C++ Treiber: Neueste von http://datastax.github.io/cpp-driver/

Ihre Hilfe ist willkommen.

Antwort

1

Gelöst!

Ich habe versucht, den Cassandra/C++ - Treiber unter Windows neu zu erstellen. Es brauchte viele Werkzeuge, um am Ende installiert und gescheitert zu sein.

Aber das Problem wurde gelöst, als ich bemerkte, dass:

In meinem Visual Studio-Projekt, war ich für win32 Aufbau und somit wurde mit

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

Aber MATLAB für 64bit war der Bau! Also, wenn ich den Pfad geändert, um die 64-Bit-Version von cassandra.lib zu verwenden:

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

Es hat funktioniert!

Ich hoffe, das spart anderen die Stunden, die ich damit verbracht habe zu jagen!