首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cmake nmake生成器编译,但不使用cmake visual studio生成器编译。模板实例化链接错误

使用cmake nmake生成器编译,但不使用cmake visual studio生成器编译。模板实例化链接错误
EN

Stack Overflow用户
提问于 2012-08-31 21:31:36
回答 1查看 908关注 0票数 0

我的工作是将Linux C++项目移植到Windows上。构建系统是cmake (2.8)。我使用nmake生成器(VisualDLL10)成功地构建了它,但是它的调试版本没有启动(参见问题12215163),然后我想在Visual C++中尝试它,但在这里构建在链接时失败,没有找到来自DLL的模板实例化。

您将在下面找到nmake和visual studio构建的输出请注意,我尝试了一个显式模板实例化,但它没有什么不同。

调试和nmake生成器(Visual C++ 10,x64,构建类型=调试):它编译

代码语言:javascript
复制
c:\PROGRA~2\MICROS~2.0\VC\bin\amd64\cl.exe    /Zc:wchar_t- /EHsc /GR /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 -IE:\Projets\Amose\Sources\lima_linguisticprocessing\src -IC:\Qt\v4.8.2\include -IC:\Qt\v4.8.2\include\QtXmlPatterns -IC:\Qt\v4.8.2\include\QtXml -IC:\Qt\v4.8.2\include\QtCore -IC:\PROGRA~1\boost\BOOST_~1\include -Ic:\amose-debug\include    -D WIN32 -Dlima_lp_analysisdict_EXPORTS -DQT_DLL -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -DQT_CORE_LIB -DBOOST_ALL_DYN_LINK -DLIMA_ANALYSISDICT_EXPORTING -DQT_DEBUG /TP /FoCMakeFiles\lima-lp-analysisdict.dir\FsaAccessResource.cpp.obj /FdC:\amose-vcbuild\lima-lp-debug\src\linguisticProcessing\core\AnalysisDict\lima-lp-analysisdictd.pdb -c E:\Projets\Amose\Sources\lima_linguisticprocessing\src\linguisticProcessing\core\AnalysisDict\FsaAccessResource.cpp

"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E vs_link_dll c:\PROGRA~2\MICROS~2.0\VC\bin\amd64\link.exe  @CMakeFiles\lima-lp-analysisdict.dir\objects1.rsp  /out:lima-lp-analysisdictd.dll /implib:lima-lp-analysisdictd.lib /pdb:C:\amose-vcbuild\lima-lp-debug\src\linguisticProcessing\core\AnalysisDict\lima-lp-analysisdictd.pdb /dll /version:1.0  /STACK:10000000 /machine:x64  /debug /INCREMENTAL -LIBPATH:C:\PROGRA~1\boost\BOOST_~1\lib -LIBPATH:c:\amose-debug\lib lima-common-factory.lib lima-common-misc.lib lima-common-data.lib lima-common-fsaaccess.lib lima-common-mediaticdata.lib lima-common-time.lib lima-common-xmlconfigurationfiles.lib lima-common-processunitframework.lib lima-common-mediaprocessors.lib ..\LinguisticProcessors\lima-lp-linguisticprocessorsd.lib ..\LinguisticResources\lima-lp-linguisticresourcesd.lib "C:\Program Files\boost\boost_1_50\lib\boost_regex-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_filesystem-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_program_options-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_system-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_thread-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_unit_test_framework-vc100-mt-gd-1_50.lib" C:\Qt\v4.8.2\lib\QtXmlPatternsd4.lib C:\Qt\v4.8.2\lib\QtXmld4.lib C:\Qt\v4.8.2\lib\QtNetworkd4.lib C:\Qt\v4.8.2\lib\QtCored4.lib lima-common-misc.lib lima-common-data.lib lima-common-mediaticdata.lib ..\LinguisticProcessors\lima-lp-linguisticprocessorsd.lib lima-common-factory.lib lima-common-time.lib lima-common-xmlconfigurationfiles.lib lima-common-processunitframework.lib lima-common-mediaprocessors.lib lima-common-qslog.lib "C:\Program Files\boost\boost_1_50\lib\boost_regex-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_filesystem-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_program_options-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_system-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_thread-vc100-mt-gd-1_50.lib" "C:\Program Files\boost\boost_1_50\lib\boost_unit_test_framework-vc100-mt-gd-1_50.lib" C:\Qt\v4.8.2\lib\QtXmlPatternsd4.lib C:\Qt\v4.8.2\lib\QtXmld4.lib C:\Qt\v4.8.2\lib\QtNetworkd4.lib C:\Qt\v4.8.2\lib\QtCored4.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib

CMake和Visual Studio生成器(Visual C++ 10、x64、debug):链接失败

代码语言:javascript
复制
 cl /c /IE:/Projets/Amose/Sources/lima_linguisticprocessing/src /IC:/Qt/v4.8.2/include /IC:/Qt/v4.8.2/include/QtXmlPatterns /IC:/Qt/v4.8.2/include/QtXml /IC:/Qt/v4.8.2/include/QtCore /I"C:/Program Files/boost/boost_1_50/include" /IC:/Program /IE:/Projets/Amose/Sources/lima_linguisticprocessing/Files/amosecommon/include /I"C:/amose-vc/include" /Zi /W1 /WX- /Od /Ob0 /D _DEBUG /D WIN32 /D QT_DLL /D QT_XMLPATTERNS_LIB /D QT_XML_LIB /D QT_CORE_LIB /D BOOST_ALL_DYN_LINK /D LIMA_ANALYSISDICT_EXPORTING /D QT_DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D lima_lp_analysisdict_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t- /Zc:forScope /GR /Fo"lima-lp-analysisdict.dir\Debug\\" /Fd"C:/amose-vcbuild/lima-lp-vc/src/linguisticProcessing/core/AnalysisDict/Debug/lima-lp-analysisdictd.pdb" /Gd /TP /errorReport:prompt E:\Projets\Amose\Sources\lima_linguisticprocessing\src\linguisticProcessing\core\AnalysisDict\FsaAccessResource.cpp

( Visual Studio中不显示链接命令行)

代码语言:javascript
复制
Création de la bibliothèque C:/amose-vcbuild/lima-lp-vc/src/linguisticProcessing/core/AnalysisDict/Debug/lima-lp-analysisdictd.lib et de l'objet C:/amose-vcbuild/lima-lp-vc/src/linguisticProcessing/core/AnalysisDict/Debug/lima-lp-analysisdictd.exp
2>FsaAccessResource.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: void __cdecl Lima::Common::FsaAccess::FsaAccessReader16<class boost::adjacency_list<struct boost::vecS,struct boost::vecS,struct boost::bidirectionalS,struct boost::property<enum vertex_count_t,class std::vector<int,class std::allocator<int> >,struct boost::property<enum boost::vertex_name_t,unsigned long,struct boost::property<enum vertex_text_t,class QString,struct boost::no_property> > >,struct boost::no_property,struct boost::no_property,struct boost::listS> >::read(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?read@?$FsaAccessReader16@V?$adjacency_list@UvecS@boost@@U12@UbidirectionalS@2@U?$property@W4vertex_count_t@@V?$vector@HV?$allocator@H@std@@@std@@U?$property@W4vertex_name_t@boost@@KU?$property@W4vertex_text_t@@VQString@@Uno_property@boost@@@2@@boost@@@2@Uno_property@2@U52@UlistS@2@@boost@@@FsaAccess@Common@Lima@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) référencé dans la fonction "public: virtual void __cdecl Lima::LinguisticProcessing::AnalysisDict::FsaAccessResource::init(class Lima::Common::XMLConfigurationFiles::GroupConfigurationStructure &,class Lima::InitializableObjectManager<class Lima::LinguisticProcessing::AbstractResource,struct Lima::LinguisticProcessing::ResourceInitializationParameters> *)" (?init@FsaAccessResource@AnalysisDict@LinguisticProcessing@Lima@@UEAAXAEAVGroupConfigurationStructure@XMLConfigurationFiles@Common@4@PEAV?$InitializableObjectManager@VAbstractResource@LinguisticProcessing@Lima@@UResourceInitializationParameters@23@@4@@Z)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-24 23:41:37

(在评论中回答。参见Question with no answers, but issue solved in the comments (or extended in chat) )

操作员写道:

我不知道为什么,但我终于能够在Visual Studio中编译了。我不确定我问的时候是不是这样,但是今天早上我看到cmake选择了cygwin链接器而不是Visual C++链接器。我修正了它,并构建了它。如果这就是答案,那就很奇怪了,因为其他几个项目和子项目没有错误地链接在一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12216407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档