C ++ / CLI LNK2028尝试使用另一个库的静态库时

时间:2012-09-14 19:24:37

标签: c++ native managed .lib

当我尝试构建我的C ++ / CLI dll时,我遇到了LNK2028错误。我在我的程序中使用一个名为pano13的静态库,我正在使用它的一种方法。我的程序中的所有内容都很好,除了我对库进行的一个方法调用,我得到了这两个例外。

Error   21  error LNK2028: unresolved token (0A00013B) "int __cdecl panoCreatePanorama(struct fullPath * const,int,struct fullPath *,struct fullPath *)" (?panoCreatePanorama@@$$FYAHQAUfullPath@@HPAU1@1@Z) referenced in function "public: int __clrcall Surgeon::Stitcher::StitchImage(class System::Collections::Generic::List<class System::String ^> ^,class System::String ^)" (?StitchImage@Stitcher@Surgeon@@$$FQ$AAMHP$AAV?$List@P$AAVString@System@@@Generic@Collections@System@@P$AAVString@6@@Z)   C:\Users\ndean_000\Documents\Visual Studio 2012\Projects\C#\CameraTest\Surgeon\Surgeon.obj  Surgeon

Error   22  error LNK2019: unresolved external symbol "int __cdecl panoCreatePanorama(struct fullPath * const,int,struct fullPath *,struct fullPath *)" (?panoCreatePanorama@@$$FYAHQAUfullPath@@HPAU1@1@Z) referenced in function "public: int __clrcall Surgeon::Stitcher::StitchImage(class System::Collections::Generic::List<class System::String ^> ^,class System::String ^)" (?StitchImage@Stitcher@Surgeon@@$$FQ$AAMHP$AAV?$List@P$AAVString@System@@@Generic@Collections@System@@P$AAVString@6@@Z)    C:\Users\ndean_000\Documents\Visual Studio 2012\Projects\C#\CameraTest\Surgeon\Surgeon.obj  Surgeon

我在项目设置中包含了lib文件,我甚至添加了#pragma comment语句来包含库,但是我收到了这个错误。我知道它与本机和托管C ++的混合有关,但是我没有用clr / pure编译程序,它是用/ clr的默认clr编译编译的。任何人有任何想法如何解决它?

1 个答案:

答案 0 :(得分:0)

顺便说一句,我在很久以前解决了这个问题,但我应该说明问题是什么。 panotools库是一个C库,而不是C ++库。我不知道C库需要在C ++中使用extern C指令。所以我必须做的就是解决我的问题

extern "C"
{
    #include <panorama.h>
}

其中panorama.h是panotools C库的包含文件。我一直想知道C是什么外星人,现在我终于理解了它的目的。