LNK2005 _DllMain@12 already defined in LIBCMT.lib问题解决

背景

CMake自动生成工程,引入以前封装的类和头文件,出现了LNK2005 _DllMain@12 already defined in LIBCMT.lib等问题.

解决

将头文件:**#include “stdafx.h”**加入到没又此头文件的头文件.

附录

生成工程的CMakeLists.tx文件

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
set(PNAME yourProjectName)
project(${PNAME})

ADD_DEFINITIONS("-DWIN32 -D_WINDOWS")
# ADD_DEFINITIONS("-D_AFXDLL -D_UNICODE -DUNICODE -D_WINDLL")
ADD_DEFINITIONS("-D_UNICODE -DUNICODE -D_WINDLL")

ADD_DEFINITIONS("/Oi /GL /Gy /Zi /MT")

ADD_DEFINITIONS("/DKAG_INFRARED_OCX")

execute_process(COMMAND git rev-parse --short HEAD
                TIMEOUT 5
                OUTPUT_VARIABLE GIT_COMMIT_ID
                OUTPUT_STRIP_TRAILING_WHITESPACE
                )               
add_definitions(-DHEAD_COMMIT_ID=${GIT_COMMIT_ID})

include(FetchLibHelper.cmake)
include(LibHelper.cmake)

SET(CMAKE_SHARED_LINKER_FLAGS "/OPT:REF /OPT:ICF /MACHINE:x86 /SUBSYSTEM:WINDOWS,5.01 /LTCG")

set(CMAKE_MFC_FLAG 1) 
set(CMAKE_CXX_STANDARD 14)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:threadSafeInit-")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Zc:threadSafeInit-")


AddFetchLib(${DEP_REPO} opencv-v3.4.0-x86-v120-static)
AddFetchLib(${DEP_REPO} spdlog-1.4.0)
AddFetchLib(${DEP_REPO} cpptoml)



# FIND_PACKAGE(Boost)
# add_subdirectory(third-party/infrared-sdk)
# add_subdirectory(third-party/directshow)

# ADD_DEFINITIONS("/sdl")

set(dshowdir ${CMAKE_CURRENT_SOURCE_DIR}/third-party/directshow)
file(GLOB dshow_src ${dshowdir}/src/*.cpp)
file(GLOB dshow_head ${dshowdir}/src/*.h)
source_group("dshow" FILES ${dshow_src} ${dshow_head})

FILE(GLOB MG_SRC src/*.c 
                 src/*.cpp
                 src/capture/*.cpp
                 src/config/*.cpp
                 third-party/json-cpp/src/*.cpp
                 third-party/base64/src/*.cpp
                 third-party/hidapi/src/*.cpp
                 src/*.idl 
                 src/*.def)
FILE(GLOB MG_HDR src/*.h 
                 src/*.hpp)
FILE(GLOB MG_RES src/*.rc src/*.bmp)

SOURCE_GROUP("Header Files"   FILES ${MG_HDR})
SOURCE_GROUP("Resource Files" FILES ${MG_RES})

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/${PNAME}.dir/${CMAKE_CFG_INTDIR}       
					third-party/directshow/include           
                    ${dshowdir}/src
                    third-party/base64/include
                    third-party/json-cpp/include
                    third-party/hidapi/include
                    ${CMAKE_SOURCE_DIR}/src
                    )
                    
LINK_LIBRARIES(strmiids winmm)
ADD_LIBRARY(${PNAME} SHARED ${MG_RES} ${dshow_src})
SET_TARGET_PROPERTIES(${PNAME} PROPERTIES SUFFIX ".ocx")

add_custom_command(TARGET ${PNAME}
                   POST_BUILD
                   COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/scripts/post-build.bat"
                            ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${PNAME}.ocx
							${CMAKE_CURRENT_SOURCE_DIR}/Megvii_${PNAME}
                   VERBATIM )

猜你喜欢

转载自blog.csdn.net/idream68/article/details/118994835