转自https://zeroset.wordpress.com/,困扰我多年的LNK2001终于解决了,真是泪流满面
Geometric Tools’ Wild Magic library is a great free, open-source and cross-platform C++ library for computational geometry and beyond. Recently, when dynamically linking against latest version 5.9 of the Wild Magic library on Windows in Visual Studio Express 2010, I ran into the following error:
error LNK2001: unresolved external symbol "public: static double const Wm5::Math<double>::ZERO_TOLERANCE" (?ZERO_TOLERANCE@?$Math@N@Wm5@@2NB) SiSTunneld.exe : fatal error LNK1120: 1 unresolved externals
A quick check revealed that the symbol was indeed properly exported from the library (dllExport). However, my code was not properly importing the symbols (dllImport). The Wild Magic library is set up to properly import a DLL’s symbol by defining a set of preprocessor definitions, one for each library (all this is well described in Wild Magic’s Installation Manual and Release Notes on page 15).
So when using the Core and Mathematics libraries, set the preprocessor defines
WM5_CORE_DLL_IMPORT
WM5_MATHEMATICS_DLL_IMPORT
in your Visual Studio project. This will properly import all symbols and resolve any unresolved linker errors.