我正在尝试构建一个具有许多依赖项的项目。为简单起见,假设 2 个项目“数学”和“物理属性”依赖于“数学”。这些项目构建在库静态和 dll 中。所以我们需要获取 libMathematics.a、Mathematics.dll、libPhysicalProperties.a 和 .dll .. .所以“PhysicalProperties”需要Boost和libMathematics.a ...我正在使用Eclipse Indigo,工具链是MingW 4.5.0。
“数学”的构建工作但不是“物理属性”的构建,它给出了链接器错误:“数学”中的“未定义的函数引用......”
我检查了依赖关系,但一切正常,函数确实被声明和定义,并且库数学被链接。我还检查了 libMathematics.a 中的符号,发现了链接器没有找到的函数......所以如果你有想法,我会很高兴读到你吗?以下是构建时的错误:
//===========================================================================
Building file: ../WaveTools.cpp
Invoking: GCC C++ Compiler
g++ -I"C:\Users\StageTahar\Desktop\Lucid\Common\Includes" -I"C:\Boost/include/Boost-1_49/" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"WaveTools.d" -MT"WaveTools.d" -o "WaveTools.o" "../WaveTools.cpp"
Finished building: ../WaveTools.cpp
Building target: ElectromagneticWave.dll
Invoking: GCC C++ Linker
g++ -s -L"C:\Users\StageTahar\Desktop\Lucid\Common\Libraries" -L"C:\Boost/lib" -shared -Wl,--out-implib=libElectromagneticWave.a -o "ElectromagneticWave.dll" ./ElectromagneticWaveImplementation.o ./WaveTools.o -lMathematics -lboost_wserialization-mgw45-mt-d-1_49
./ElectromagneticWaveImplementation.o: In function `ZNK11JonesVectorIfE12getIntensityEv':
C:\Users\StageTahar\Desktop\Lucid\Engines\ElectromagneticWave\Debug/../WaveDefinitions.h:124: undefined reference to `float norm<float>(ComplexT<float> const&)'
//=========================================================================================