Ошибка LNK2019: внешний символ

Я новичок в elastix и застрял в самом начале. Я пытаюсь скомпилировать очень простую программу на С++, которая создаст экземпляр используемой библиотеки elastix. Когда я попытался скомпилировать программу, я получил ошибку компоновщика:

Ошибка LNK2019: внешний символ "public: virtual __cdecl elastix ELASTIX :: :: ~ ELASTIX (void)" (?? 1ELASTIX @ elastix FALU@@@XZ) неразрешенный, указанный в "public function: virtual void * __cdecl elastix eLASTIX: : :: `скалярный деструктор удаления' (unsigned int)" (?? _ @elastix GELASTIX UEAAPEAXI@@@Z)

Я немного погуглил и обнаружил, что на самом деле это популярная проблема с компоновщиком: symbol-function">см. эту тему и этот и эта конкретная почтовая цепочка 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 )

код С++

#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;
}

person jorne    schedule 09.12.2014    source источник
comment
Вероятно, библиотека elastix не подключена, потому что она либо не указана в флагах компоновщика, либо указана неправильно. Если бы вы использовали GNU make, я бы посоветовал вам запустить что-то вроде make VERBOSE=1, чтобы увидеть фактические флаги компоновщика, но, поскольку вы, вероятно, используете nmake, возможно, это SO question может помочь вам выяснить, что представляют собой фактические флаги.   -  person user3159253    schedule 09.12.2014
comment
Я использую cmake-gui, я устанавливаю путь вручную и потом перенастраиваю.   -  person jorne    schedule 10.12.2014


Ответы (1)


Итак, я решил это. Я отказался от всего этого, и казалось, что CMake не применил мои изменения, которые я сделал в графическом интерфейсе. Поэтому я изменил CMakeLists вручную. После этого работал как шарм

person jorne    schedule 11.12.2014