2016-11-08 86 views
0

我有一个C++项目,使用诸如wiringPi和MySQL Connector之类的库。当我运行它时,我的常规项目通常会编译。当我尝试测试我的一个测试时,它无法构建项目。Netbeans Cpp编译并运行项目,但不能用cppunit测试

下面是输出:

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf 
make[1]: Entering directory '/home/nick/NetBeansProjects/utest' 
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux/utest 
make[2]: Entering directory '/home/nick/NetBeansProjects/utest' 
make[2]: 'dist/Debug/GNU-Linux/utest' is up to date. 
make[2]: Leaving directory '/home/nick/NetBeansProjects/utest' 
make[1]: Leaving directory '/home/nick/NetBeansProjects/utest' 
"/usr/bin/make" -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-tests-conf 
make[1]: Entering directory '/home/nick/NetBeansProjects/utest' 
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux/utest 
make[2]: Entering directory '/home/nick/NetBeansProjects/utest' 
make[2]: 'dist/Debug/GNU-Linux/utest' is up to date. 
make[2]: Leaving directory '/home/nick/NetBeansProjects/utest' 
mkdir -p build/Debug/GNU-Linux/tests/TestFiles 
g++ -lmysqlcppconn -lwiringPi  -o build/Debug/GNU-Linux/tests/TestFiles/f1 build/Debug/GNU-Linux/tests/tests/ConfigParserRunner.o build/Debug/GNU-Linux/tests/tests/ConfigParserTest.o build/Debug/GNU-Linux/main_nomain.o build/Debug/GNU-Linux/src/ConfigFactory_nomain.o build/Debug/GNU-Linux/src/DatabaseAdapter_nomain.o build/Debug/GNU-Linux/src/MatrixControl_nomain.o build/Debug/GNU-Linux/src/ModuleEntity_nomain.o build/Debug/GNU-Linux/src/ModuleServer_nomain.o build/Debug/GNU-Linux/src/SerialDriver_nomain.o build/Debug/GNU-Linux/src/StorageManagement_nomain.o -Llib/cpputest-3.8/lib -L/usr/lib/mysql -L/usr/lib/x86_64-linux-gnu -L/usr/include/cppconn -L/usr/include/cppunit -lCppUTest -lCppUTestExt `cppunit-config --libs` 
build/Debug/GNU-Linux/src/DatabaseAdapter_nomain.o: In function `DatabaseAdapter::DatabaseAdapter(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)': 
/home/nick/NetBeansProjects/utest/src/DatabaseAdapter.cxx:8: undefined reference to `get_driver_instance' 
build/Debug/GNU-Linux/src/DatabaseAdapter_nomain.o: In function `DatabaseAdapter::addProduct(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, productData, int)': 
/home/nick/NetBeansProjects/utest/src/DatabaseAdapter.cxx:27: undefined reference to `get_driver_instance' 
build/Debug/GNU-Linux/src/DatabaseAdapter_nomain.o: In function `DatabaseAdapter::getEntriesByModule(int)': 
/home/nick/NetBeansProjects/utest/src/DatabaseAdapter.cxx:66: undefined reference to `get_driver_instance' 
build/Debug/GNU-Linux/src/MatrixControl_nomain.o: In function `MatrixControl::MatrixControl(ModuleServer*)': 
/home/nick/NetBeansProjects/utest/src/MatrixControl.cpp:23: undefined reference to `wiringPiSetup' 
build/Debug/GNU-Linux/src/SerialDriver_nomain.o: In function `SerialDriver::SerialDriver()': 
/home/nick/NetBeansProjects/utest/src/SerialDriver.cpp:18: undefined reference to `pinMode' 
/home/nick/NetBeansProjects/utest/src/SerialDriver.cpp:19: undefined reference to `pinMode' 
/home/nick/NetBeansProjects/utest/src/SerialDriver.cpp:20: undefined reference to `pinMode' 
build/Debug/GNU-Linux/src/SerialDriver_nomain.o: In function `SerialDriver::sendShiftData(unsigned char)': 
/home/nick/NetBeansProjects/utest/src/SerialDriver.cpp:28: undefined reference to `shiftOut' 
build/Debug/GNU-Linux/src/SerialDriver_nomain.o: In function `SerialDriver::setLatch(bool)': 
/home/nick/NetBeansProjects/utest/src/SerialDriver.cpp:33: undefined reference to `digitalWrite' 
collect2: error: ld returned 1 exit status 
nbproject/Makefile-Debug.mk:146: recipe for target 'build/Debug/GNU-Linux/tests/TestFiles/f1' failed 
make[1]: *** [build/Debug/GNU-Linux/tests/TestFiles/f1] Error 1 
make[1]: Leaving directory '/home/nick/NetBeansProjects/utest' 
nbproject/Makefile-impl.mk:67: recipe for target '.build-tests-impl' failed 
make: *** [.build-tests-impl] Error 2 

BUILD TESTS FAILED (exit value 2, total time: 584ms) 

使用DatabaseAdapter & SerialDriver班实施前工作的检查。

我已经加入库选项链接器的其它选项在我的主要项目属性,像这样:

-lCppUTest -lCppUTestExt -lwiringPi -lpthread -lmysqlclient -lmysqlcppconn -lcppunit -ldl 

我做得不对的链接?

编辑:我尝试测试的测试不使用任何失败的类。

在此先感谢。

+1

未定义的符号,他们应该在哪里定义?您是否缺少项目中的某个源文件? –

+0

他们将被包括在图书馆。即当我从我的主项目中删除我的-lwiringPi时,我收到了与我在测试版本中相同的错误。 当我在我的测试文件夹链接器选项中添加-lwiringPi时,它不会改进输出 – ikdekker

+1

库的顺序。我从构建输出中看到,在对象文件之前有两个库*。这些库中的符号不​​会被使用。您应该将所有库放在源文件或目标文件之后。链接时,如果A取决于B,则A必须在命令行上出现在B之前。 –

回答

0

解决方案是将我的依赖项作为选项添加到我的库文件夹中。我添加了-lwiringPi和-lmysqlcppconn链接器。

相关问题