使用CGAL和GMP编译错误



也许有人能帮我解决这个问题。为了从点云创建网格,我在Win7 x64上安装了CGAL 4.7,在使用Cmake后,我成功地使用VS2012编译了它。在一个测试项目中,我想构建一个在CGAL文档中找到的示例http://doc.cgal.org/latest/Advancing_front_surface_reconstruction/Advancing_front_surface_reconstruction_2reconstruction_surface_mesh_8cpp-example.html在我的项目中,我链接/包括了CGAL和boost以及gmp库(CGAL安装附带的那个库)。但如果编译这个小测试,我仍然会收到以下错误消息:

1>  ConsoleApplication1.cpp
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpq_add" in Funktion ""class CGAL::Gmpq __cdecl CGAL::operator+(class CGAL::Gmpq const &,class CGAL::Gmpq const &)" (??HCGAL@@YA?AVGmpq@0@AEBV10@0@Z)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpq_clear" in Funktion ""public: __cdecl CGAL::Gmpq_rep::~Gmpq_rep(void)" (??1Gmpq_rep@CGAL@@QEAA@XZ)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpq_cmp" in Funktion ""public: bool __cdecl CGAL::Gmpq::operator<(class CGAL::Gmpq const &)const " (??MGmpq@CGAL@@QEBA_NAEBV01@@Z)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpq_init" in Funktion ""public: __cdecl CGAL::Gmpq_rep::Gmpq_rep(void)" (??0Gmpq_rep@CGAL@@QEAA@XZ)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpq_mul" in Funktion ""class CGAL::Gmpq __cdecl CGAL::operator*(class CGAL::Gmpq const &,class CGAL::Gmpq const &)" (??DCGAL@@YA?AVGmpq@0@AEBV10@0@Z)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpq_set_d" in Funktion ""public: __cdecl CGAL::Gmpq::Gmpq(double)" (??0Gmpq@CGAL@@QEAA@N@Z)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpq_sub" in Funktion ""class CGAL::Gmpq __cdecl CGAL::operator-(class CGAL::Gmpq const &,class CGAL::Gmpq const &)" (??GCGAL@@YA?AVGmpq@0@AEBV10@0@Z)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpn_add_n" in Funktion "__gmpn_add".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpn_mul" in Funktion ""struct CGAL::Mpzf __cdecl CGAL::operator*(struct CGAL::Mpzf const &,struct CGAL::Mpzf const &)" (??DCGAL@@YA?AUMpzf@0@AEBU10@0@Z)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpn_sqr" in Funktion ""struct CGAL::Mpzf __cdecl CGAL::Mpzf_square(struct CGAL::Mpzf const &)" (?Mpzf_square@CGAL@@YA?AUMpzf@1@AEBU21@@Z)".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpn_sub_n" in Funktion "__gmpn_sub".
1>ConsoleApplication1.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___gmpn_copyi" in Funktion ""public: __cdecl CGAL::Mpzf::Mpzf(struct CGAL::Mpzf const &)" (??0Mpzf@CGAL@@QEAA@AEBU01@@Z)".
1>C:Userscapdocumentsvisual studio 2012ProjectsConsoleApplication1x64DebugConsoleApplication1.exe : fatal error LNK1120: 12 nicht aufgelöste Externe

所以我怀疑仍然有一些依赖缺失,但哪些呢?提前感谢

忘记了命令行:c/c++

/Yu"stdafx.h" /GS /W3 /Zc:wchar_t /I"C:UserscapDocumentscpp_librariesCGAL-4.7auxiliarygmpinclude" /I"C:UserscapDocumentscpp_librariesCGAL-4.7buildinclude" /I"C:UserscapDocumentscpp_librariesboost_1_54_0" /I"C:UserscapDocumentscpp_librariesCGAL-4.7include" /Zi /Gm /Od /sdl /Fd"x64Debugvc110.pdb" /fp:precise /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /Fa"x64Debug" /EHsc /nologo /Fo"x64Debug" /Fp"x64DebugConsoleApplication1.pch" 

链接器:

/OUT:"C:Userscapdocumentsvisual studio 2012ProjectsConsoleApplication1x64DebugConsoleApplication1.exe" /MANIFEST /NXCOMPAT /PDB:"C:Userscapdocumentsvisual studio 2012ProjectsConsoleApplication1x64DebugConsoleApplication1.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X64 /INCREMENTAL /PGD:"C:Userscapdocumentsvisual studio 2012ProjectsConsoleApplication1x64DebugConsoleApplication1.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64DebugConsoleApplication1.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"C:UserscapDocumentscpp_librariesCGAL-4.7auxiliarygmplib" /LIBPATH:"C:UserscapDocumentscpp_librariesboost_1_54_0lib64-msvc-11.0" /LIBPATH:"C:UserscapDocumentscpp_librariesCGAL-4.7buildlib" /TLBID:1 

在Visual Studio 2015中(我假设在Visual Studio 2012中),除了到要查找这些文件的目录之外,还需要指定实际的lib文件(如下所述:何时使用Visual Studio附加依赖项?)。

查看您的链接器命令,我发现您已经指定了GMP/MPFR库(/LIBPATH:"C:UserscapDocumentscpp_librariesCGAL-4.7auxiliarygmplib)的目录,但您还需要通过将实际库文件添加到/DYNAMICBASE列表来指定它们:

/DYNAMICBASE "libgmp-10.lib" "libmpfr-4.lib" "kernel32.lib" "user32.lib" ...

相关内容

  • 没有找到相关文章

最新更新