我是elastix的新手,一开始就卡住了。我正在尝试用 C++ 编译一个非常基本的程序,它将对使用 elastix 库进行实例化。当我试图编译程序时,我得到了一个链接器错误:
错误 LNK2019: 外部符号 "public: virtual __cdecl elastix ELASTIX :: :: ~ ELASTIX (void)" (?? 1ELASTIX @ elastix FALU@@@XZ) unresolved in the "public function: virtual void * __cdecl elastix eLASTIX: : :: `标量删除析构函数'(unsigned int)" (?? _ @ elastix GELASTIX UEAAPEAXI@@@Z)
我做了一些谷歌搜索,发现它实际上是一个流行的链接器问题:请参阅这个主题 和这个 以及这个特定的 elastix 邮件链。我尝试使用这些链接修复它,但没有成功。我想知道你们是否可以帮助我。您可以在下面找到我的源文件(CMakeList.txt 和 C++ 代码)和一些附加信息:我运行 windows 7,Cmake 版本是 3.0.2,ITK 版本是 4.6,elastix 版本是 4.7 和 Microsoft VS 2008。提前致谢
CmakeList.txt # 使用来自外部项目的 elastix 代码的示例项目。项目(elxExternalProject)
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
# Find TIK
FIND_PACKAGE( ITK REQUIRED )
INCLUDE( ${ITK_USE_FILE} )
# find elastix
SET( ELASTIX_BINARY_DIR "" CACHE PATH "Path to elastix binary folder" )
SET( ELASTIX_USE_FILE ${ELASTIX_BINARY_DIR}/UseElastix.cmake )
IF( EXISTS ${ELASTIX_USE_FILE} )
MESSAGE( STATUS "Including Elastix settings." )
INCLUDE( ${ELASTIX_USE_FILE} )
ENDIF()
# Build a small test executable (this test is basically the same as
# the one found in the <elastix-dir>/src/Testing dir.
ADD_EXECUTABLE( elxtimertest itkTimerTest.cxx )
# Link to some libraries
TARGET_LINK_LIBRARIES( elxtimertest
ITKCommon elxCommon elastix )
C++ 代码
#include "elastixlib.h"
using namespace elastix;
int main( int argc, char *argv[] )
{
ELASTIX* el = new ELASTIX();
std::cerr << "elastix created" << std::endl;
delete el;
return 0;
}