[Insight-users] Multiple shared libraries and linking error: itk_nrrdSpaceDimension already defined

Barbara Post bpo at eonix.be
Wed Mar 12 12:06:32 EDT 2014


Hello,

I'm not sure about what I should change in my project.
I read
https://issues.itk.org/jira/browse/ITK-2861?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab so this indicates the error is from me, not ITK.

I build a shared library that is a custom Qt4 plugin. I use another set of libraries MYOTHERLIB that provides an itk-tools.dll shared lib with classes dedicating to talking to ITK.

I use MSVC 2010 64 bit compiler, compiled ITK with it.

My error when compiling :
LNK2005: itk_nrrdSpaceDimension already defined in itk-tools.lib(itk-tools.dll)

itk-tools base class, XITKTools, has following ITK includes:

#include <itkImage.h>
#include <itkImageFileWriter.h>
#include <itkImageFileReader.h>
#include <itkMinimumMaximumImageCalculator.h>
#include <itkImageMaskSpatialObject.h>

What else could I check about includes/linkings?

Thanks,

Barbara

My CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.8)

project(applet-tutorial2)

FIND_PACKAGE(Qt4 REQUIRED)

if (QT4_FOUND)
    INCLUDE(${QT_USE_FILE})
else()
    message(FATAL_ERROR "No Qt4 found")
endif()

FIND_PACKAGE(ITK REQUIRED)

if(ITK_FOUND)
    include(${ITK_USE_FILE})
else()
    message(FATAL_ERROR "No ITK found")
endif()

# define path to MYOTHERLIB platform, relying on environment variable
IF(CMAKE_BUILD_TYPE MATCHES Debug)
    SET(MYOTHERLIB_DIR "$ENV{MYOTHERLIB}/debug")
    MESSAGE(STATUS "Debug build")
ELSE()
    SET(MYOTHERLIB_DIR "$ENV{MYOTHERLIB}/relWithDebInfo")
    MESSAGE(STATUS "Not debug build")
ENDIF()

# define cmake subdirectory
set(MYOTHERLIB_CMAKE_DIR cmake)
# required for find_package directive to work
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/${MYOTHERLIB_CMAKE_DIR})

# Find MYOTHERLIB platform installation
find_package(MYOTHERLIBPlatform REQUIRED)

# application headers files
SET(applet_tutorial2_HEADERS
[snip]
)
# application files: source files
# and every file we want to show up in project files tree
# (headers and other files)
SET(applet_tutorial2_SOURCES
    ${applet_tutorial2_HEADERS}
[snip]
)

SET(applet_tutorial2_RESOURCES resources/resources.qrc)

# Use AutoMoc
SET(CMAKE_AUTOMOC ON)
# Resources
QT4_ADD_RESOURCES(applet_tutorial2_RESOURCES_RCC ${applet_tutorial2_RESOURCES})

# all includes
include_directories(
"${CMAKE_CURRENT_SOURCE_DIR}/include"
"${MYOTHERLIB_DIR}/include"
"${MYOTHERLIB_DIR}/include/foundation"
"${MYOTHERLIB_DIR}/include/logger"
"${MYOTHERLIB_DIR}/include/container-data"
"${MYOTHERLIB_DIR}/include/dicom"
"${MYOTHERLIB_DIR}/include/itk-tools"
${CMAKE_CURRENT_BINARY_DIR}
)

# linking
link_directories("${MYOTHERLIB_DIR}/lib")

# build shared library (syntax: name, type, list of files)
add_library(
    applet-tutorial2 SHARED
    ${applet_tutorial2_SOURCES}
    ${applet_tutorial2_HEADERS}
)

# linking. Variables are defined by find_library() call in MYOTHERLIB_config.cmake
# MYOTHERLIB defines 5 *_LIB variables below.
target_link_libraries(
    applet-tutorial2
    ${QT_LIBRARIES}
    ${ITK_LIBRARIES}
    ${foundation_LIB}
    ${logger_LIB}
    ${container-data_LIB}
    ${dicom_LIB}
    ${itk-tools_LIB}
)


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20140312/c0636545/attachment.html>


More information about the Insight-users mailing list