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 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值