【发布时间】:2012-06-30 22:37:55
【问题描述】:
我在我的 MFC + vtk 项目中使用 Visual Studio 2008。我收到如下链接错误:
vtkPBFEAView.obj : 警告 LNK4217: 本地定义符号 ?DrawDC@vtkMFCWindow@@QAEXPAVCDC@@@Z (public: void __thiscall vtkMFCWindow::DrawDC(class CDC *)) 在函数“protected: virtual void __thiscall CvtkPBFEAView: :OnDraw(类 CDC *)" (?OnDraw@CvtkPBFEAView@@MAEXPAVCDC@@@Z)
1>vtkMDIView.obj : 警告 LNK4049: 已导入本地定义的符号 ?DrawDC@vtkMFCWindow@@QAEXPAVCDC@@@Z (public: void __thiscall vtkMFCWindow::DrawDC(class CDC *)) 1>vtkPBFEAView.obj : 警告 LNK4217: 本地定义的符号 ??0vtkMFCWindow@@QAE@PAVCWnd@@@Z (public: __thiscall vtkMFCWindow::vtkMFCWindow(class CWnd *)) 在函数“public: void __thiscall vtkPBFEAViewImpl::initialize”中导入(类 CWnd *)" (?initialize@vtkPBFEAViewImpl@@QAEXPAVCWnd@@@Z)
1>vtkMDIView.obj : 警告 LNK4049: 已导入本地定义符号 ??0vtkMFCWindow@@QAE@PAVCWnd@@@Z (public: __thiscall vtkMFCWindow::vtkMFCWindow(class CWnd *)) 1>vtkPBFEAView.obj : 警告 LNK4217: local defined symbol ??1vtkMFCWindow@@UAE@XZ (public: virtual __thiscall vtkMFCWindow::~vtkMFCWindow(void)) 在函数“public: virtual void * __thiscall vtkMFCWindow::`scalar删除析构函数'(unsigned int)" (??_GvtkMFCWindow@@UAEPAXI@Z)
1>vtkMDIView.obj : 警告 LNK4217: 本地定义符号 ??1vtkMFCWindow@@UAE@XZ (public: virtual __thiscall vtkMFCWindow::~vtkMFCWindow(void)) 在函数“public: void __thiscall vtkMDIViewImpl::adjust_contours( int,double,double)" (?adjust_contours@vtkMDIViewImpl@@QAEXHNN@Z)
1>vtkMFCWindow.obj : error LNK2019: unresolved external symbol "_declspec(dllimport) const vtkMFCWindow::`vftable'" (_imp_??_7vtkMFCWindow@@6B@) 在函数中引用public: __thiscall vtkMFCWindow::vtkMFCWindow(class CWnd *)" (??0vtkMFCWindow@@QAE@PAVCWnd@@@Z)
谁能解释一下这个错误的原因?
提前致谢。
【问题讨论】:
-
有一个类似的问题asked here,看看对你有没有帮助。
-
感谢@satuon 的链接。我现在正在用 dll 文件构建 vtk,但它之前有 udes 静态库。可能这就是问题所在,所以我正在尝试使用静态库构建 vtk,我发现之前很难构建。你有什么建议吗?再次感谢。
-
在链接中我给出的解决方案是使用共享库而不是静态库构建(它们打开 BUILD_SHARED_LIBS)。你这样做了吗?
-
是的。我正在使用 SHARED_LIBS 选项,并且正在链接所有库。
-
那么,您现在是使用共享库构建,还是使用静态库构建?我问是因为您之前说过“所以我正在尝试使用静态库构建 vtk”。
标签: visual-studio-2008 visual-c++ mfc vtk