我想我只是犯了一個簡單的錯誤,但我沒有得到哪個.. 反正我在圖書館工作,我也使用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開關添加到您的構建? – 2013-03-14 21:45:06