# Shared lib on windows with debug suffix tries to load dll without suffix

**URL:** https://discourse.cmake.org/t/shared-lib-on-windows-with-debug-suffix-tries-to-load-dll-without-suffix/4032
**Category:** Usage
**Tags:** os:windows, gen:vs
**Created:** [September 3, 2021, 3:05pm UTC](https://discourse.cmake.org/t/shared-lib-on-windows-with-debug-suffix-tries-to-load-dll-without-suffix/4032 "2021-09-03T15:05:52Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![jshanab](https://discourse.cmake.org/user_avatar/discourse.cmake.org/jshanab/32/2555_2.png) [@jshanab](https://discourse.cmake.org/u/jshanab)
#### Post date: [September 3, 2021, 3:05pm UTC](https://discourse.cmake.org/t/shared-lib-on-windows-with-debug-suffix-tries-to-load-dll-without-suffix/4032/1 "2021-09-03T15:05:52Z")

</div>

This used to work but after a rather big jump in CMake version I am seeing a strange behaviour on a lib that I build with cmake. live555. It has a def file and now cmake has modified my def file and added/update the ;Library line to

;LIBRARY “${LIVE555\_x64\_DLL\_NAME}”

When I change the project name or the DEBUG\_POSTFIX, the dll and lib change names but when the exe runs it ALWAYS now tries to open Live555.dll and fails.

The def file name is Live555\_x64.def and that seems to be the only place the string “Live555” is currently.

Is debug/release shared library broken on windows for those with def files?

cmake version is 3.21.0-rc2

Relevant section of CMake :

if (WIN32)  
if( ${CMAKE\_VS\_PLATFORM\_NAME} STREQUAL “x64” )  
SET (DEF\_FILE “${LIVE555\_ROOT}/Live555\_x64.def”)  
else()  
SET (DEF\_FILE “${LIVE555\_ROOT}/Live555.def”)  
endif()  
endif()

…

add\_library( ${PROJECT\_NAME} SHARED  
${GROUPSOCK\_HEADERS} ${GROUPSOCK\_SOURCES}  
${EVLIVE555\_HEADERS} ${EVLIVE555\_SOURCES}  
${BASICUSAGEENVIRONMENT\_HEADERS} ${BASICUSAGEENVIRONMENT\_SOURCES}  
${USAGEENVIRONMENT\_HEADERS} ${USAGEENVIRONMENT\_SOURCES}  
${TRANSPORT\_HEADERS} ${TRANSPORT\_SOURCES}  
${LIVEMEDIA\_HEADERS} ${LIVEMEDIA\_SOURCES}  
“${DEF\_FILE}”  
)

add\_library(${PROJECT\_NAME}::${PROJECT\_NAME} ALIAS ${PROJECT\_NAME})

set\_property(TARGET ${PROJECT\_NAME} PROPERTY CXX\_STANDARD 20)  
set\_property(TARGET ${PROJECT\_NAME} PROPERTY CXX\_STANDARD\_REQUIRED ON)

target\_include\_directories( ${PROJECT\_NAME}  
PUBLIC  
${PUBLIC\_LIVE555\_INCLUDE\_DIRS}  
${BASICUSAGEENVIRONMENT\_INCLUDE\_DIR}  
${GROUPSOCK\_INCLUDE\_DIR}  
${USAGEENVIRONMENT\_INCLUDE\_DIR}  
${TRANSPORT\_INCLUDE\_DIR}  
${LIVEMEDIA\_INCLUDE\_DIR}  
)

#SET\_TARGET\_PROPERTIES(${PROJECT\_NAME} PROPERTIES OUTPUT\_NAME ${PROJECT\_NAME}-${MAJOR\_VERSION\_NUMBER})  
#set\_property(TARGET ${PROJECT\_NAME} PROPERTY OUTPUT\_NAME ${PROJECT\_NAME}-${MAJOR\_VERSION\_NUMBER})  
set\_property(TARGET ${PROJECT\_NAME} PROPERTY DEBUG\_POSTFIX “d”)  
set\_property(TARGET ${PROJECT\_NAME} PROPERTY CMAKE\_LINK\_DEF\_FILE\_FLAG “/DEF:${DEF\_FILE}”)
