Skip to content

Error building tests with shared libraries on Windows #543

Open
@fpagliughi

Description

@fpagliughi

Any Windows developers who can help me figure this out?

When I build the Catch2 unit tests on Windows with MSVC, if I only build the shared library (DLL), I get the following error:

  CMake Error at C:/Program Files (x86)/Catch2/lib/cmake/Catch2/CatchAddTests.cmake:70 (message):
    Error running test executable
    'D:/mqtt/paho-mqttpp/build/test/unit/Debug/unit_tests.exe':

      Result: Exit code 0xc0000135



      Output:

  Call Stack (most recent call first):
    C:/Program Files (x86)/Catch2/lib/cmake/Catch2/CatchAddTests.cmake:175 (catch_discover_tests_impl)


C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: The command "setlocal [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: "C:\Program Files\CMake\bin\cmake.exe" -D TEST_TARGET=unit_tests -D TEST_EXECUTABLE=D:/mqtt/paho-mqttpp/build/test/unit/Debug/unit_tests.exe -D TEST_EXECUTOR= -D TEST_WORKING_DIR=D:/mqtt/paho-mqttpp/build/test/unit -D TEST_SPEC= -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_LIST=unit_tests_TESTS -D TEST_REPORTER= -D TEST_OUTPUT_DIR= -D TEST_OUTPUT_PREFIX= -D TEST_OUTPUT_SUFFIX= -D TEST_DL_PATHS= -D CTEST_FILE=D:/mqtt/paho-mqttpp/build/test/unit/unit_tests-b12d07c_tests.cmake -P "C:/Program Files (x86)/Catch2/lib/cmake/Catch2/CatchAddTests.cmake" [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmEnd [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmErrorLevel [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: exit /b %1 [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmDone [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :VCEnd" exited with code 1. [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]

It is clearly because the unit test executable doesn't have the path to the Paho C and C++ DLL's. If I manually set the path to include the directories in the build tree where it is building and placing the DLLs, then the error goes away.

(I also don't get the error if I build the libraries as static).

Anyone have any idea how to fix this?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions