2016-10-14 2 views
4

Ich habe ein Unittest-Projekt, das mit google Test-Framework und meine Tests funktionierte gut. Aber jetzt habe ich boost::filesystem Header wie #include <boost/filesytem.hpp> und danach mein Projekt Verknüpfung und Zusammenstellung in Ordnung, aber keine Tests überhaupt und wenn ich Tests laufen dann ist es mir -Unit-Test von Google-Test nicht mehr nach dem Hinzufügen von Header mit boost :: Dateisystem gefunden

Process finished with exit code -1073741515 (0xC0000135) 
Empty test suite. 

Wie, wenn ich diesen Code:

#include <gtest/gtest.h> 
TEST(Test, Test1){ 
    ASSERT_FALSE(true); 
} 

funktioniert es völlig in Ordnung, und es versäumt, Testfall finden, aber wenn ich Boost-Header wie folgt hinzu:

#include <gtest/gtest.h> 
#include <boost/filesystem.hpp> 
TEST(Test, Test1){ 
    ASSERT_FALSE(true); 
} 

danach nichts gefunden. Ich benutze cmake/clion/cygwin basiert env. Wird für Ihre Ideen geschätzt, wie man dieses Problem beheben kann.

Antwort

3

Der Fehlercode gibt

// 
// MessageId: STATUS_DLL_NOT_FOUND 
// 
// MessageText: 
// 
// The program can't start because %hs is missing from your computer. 
// Try reinstalling the program to fix this problem. 
// 
#define STATUS_DLL_NOT_FOUND    ((NTSTATUS)0xC0000135L) // winnt 

(siehe What does error code 0xc0000135 mean when starting a .NET application?)

Meine Vermutung ist, dass Sie Google-Test mit einer dynamischen Bibliothek verwendet, um die Tests zu enthalten. Seit Sie Boost Dateisystem hinzugefügt haben, wird es nun mit Boost System und Boost Dateisystem DLLs verbunden.

Der Test-Runner kann diese Abhängigkeiten jedoch nicht laden (was zu dem angezeigten Fehler führt). Installieren Sie die Boost-DLLs systemweit, kopieren Sie sie in das Ausgabeverzeichnis für das Test Runner-Ziel (oder wo auch immer der Testrunner gestartet wird) oder verwenden Sie Manifestdateien, um die DLL-Speicherorte anzugeben.

AKTUALISIEREN Wie der Kommentator hinzugefügt, wird natürlich auch die Verknüpfung zu den DLLs das Problem nicht verschwinden lassen.

+1

Oder kompilieren Sie die Boost System und Filesystem libs als statische Bibliotheken und verknüpfen Sie diese in. –

+0

Und Boost System @ ratchetfreak – sehe

+1

in cmake, um statische Version von Boost-Bibliotheken zu verwenden 1) haben sie als statische Bibliotheken builded 2) add ' set (Boost_USE_STATIC_LIBS ON) 'vor' find_package (Boost ...) ' –

Verwandte Themen