2013-03-14 48 views
0

我想我只是犯了一個簡單的錯誤,但我沒有得到哪個.. 反正我在圖書館工作,我也使用cmake爲項目構建Makefiles :https://github.com/immapoint/NaNO3/blob/master/CMakeLists.txt使用cmake構建的庫鏈接錯誤

編譯庫時一切正常;它建立以下文件:

bin/libNaNO3.dll 
lib/libNaNO3.dll.a (I don't like that name as well) 

爲了測試整個事情,我得到了另一個項目,也使用cmake。 https://github.com/immapoint/NaNO3TestApp/blob/master/CMakeLists.txt

主要文件來測試庫看起來是這樣的: https://github.com/immapoint/NaNO3TestApp/blob/master/src/main.cpp

但是,當涉及到編制的主要文件,我收到以下錯誤:

CMakeFiles/NaNO3TestApp.dir/objects.a(main.cpp.obj):main.cpp:(.text+0xbf): undefined reference to `nano::Event<int>::attach(std::function<void(int)> *)` 
CMakeFiles/NaNO3TestApp.dir/objects.a(main.cpp.obj):main.cpp:(.text+0xd3): undefined reference to `nano::Event<int>::notify(int)` 
[...]ld.exe: CMakeFiles/NaNO3TestApp.dir/objects.a(main.cpp.obj): bad reloc address 0x8 in section `.rdata' 

此錯誤occures是否我使用make/cmake構建項目或直接使用編譯源文件

g++ -Wall -pedantic -ansi -std=c++0x main.cpp [-L./lib -I./include] -lNaNO3 

所以問題似乎不在於cmake而是在ld中。 我正在使用CMake版本2.8和MinGW包含GCC版本4.7.2。

其他信息:

編譯器輸出與-fPIC: -fPIC

+0

您可以將-fPIC開關添加到您的構建? – 2013-03-14 21:45:06

回答