Hello,
I have a main, and I can link a library (Called DynLib) to that main, dynamically (SHARED). Now I have another library (Called SubDynLib), that i want to link to DynLib. If I build SubDynLib alone, and then put the SubDynLib.lib file in the target_link_directories, it works. If I want build SubDynLib togheter with DynLib I receive the error
Severity Code Description Project File Line Suppression State Details
Error LNK2005 DllMain already defined in DynLib.cpp.obj
What am I doing wrong?
DYNLIB
cmake_minimum_required (VERSION 3.16)
project (“DYNLIB” VERSION 1.0.0)
add_library(DYNLIB SHARED)
target_sources(DYNLIB
PUBLIC
DynLib.h
DynLib.cpp
DynLib.def
)
target_include_directories(DYNLIB
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC
…/SubDynLib
)
target_link_libraries(DYNLIB
PRIVATE
SUBDYNLIB
)
install(TARGETS DYNLIB DESTINATION ${CMAKE_BINARY_DIR}/CMakeProjectDynLinkTestWin)
SUBDYNLIB
cmake_minimum_required (VERSION 3.16)
project (“SUBDYNLIB” VERSION 1.0.0)
add_library(SUBDYNLIB SHARED)
target_sources(SUBDYNLIB
PUBLIC
SubDynLib.h
SubDynLib.cpp
PRIVATE
SubDynLib.def
)
target_include_directories(SUBDYNLIB
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}
)
install(TARGETS SUBDYNLIB DESTINATION ${CMAKE_BINARY_DIR}/CMakeProjectDynLinkTestWin)
MAIN EXEC
cmake_minimum_required (VERSION 3.16)
add_executable (CMakeProjectDynLinkTestWin “CMakeProjectDynLinkTestWin.cpp” “CMakeProjectDynLinkTestWin.h”)
target_compile_features(CMakeProjectDynLinkTestWin PUBLIC cxx_std_11)
set(CMAKE_SYSTEM_VERSION “10.0.19041.0”)
set(CMAKE_GENERATOR_TOOLSET “v141”)
set(CMAKE_VS_PLATFORM_TOOLSET “v141”)
target_compile_options(CMakeProjectDynLinkTestWin PUBLIC /Zp1)
target_compile_definitions(CMakeProjectDynLinkTestWin PUBLIC WINDOWS_IGNORE_PACKING_MISMATCH)
target_link_libraries(CMakeProjectDynLinkTestWin
PRIVATE
DYNLIB
)
ROOT CMAKE
CMakeList.txt : Top-level CMake project file, do global configuration
and include sub-projects here.
cmake_minimum_required (VERSION 3.16)
if (POLICY CMP0022)
cmake_policy(SET CMP0022 NEW)
endif()
project (“CMakeProjectDynLinkTestWin”)
add_subdirectory (“CMakeProjectDynLinkTestWin”)
Include sub-projects.
add_subdirectory (“SubDynLib”)
add_subdirectory (“DynLib”)
Any help is appreciated
Thanks
BC