Не удалось устранить ошибку компоновщика: "фатальная ошибка C1049: недопустимый числовой аргумент" specload ""

Попытка собрать библиотеку с использованием Nmake и msvc 120 из некоторых сторонних библиотек, существующего кода и встроенной зависимой библиотеки (база кода огромна).

Ниже приведена ошибка, которую я получаю при компоновке библиотеки:

Linking CXX shared library test.dll  
fatal error C1049: invalid numerical argument 'specload'  
LINK : fatal error LNK1257: code generation failed  
LINK failed. with 1257  
NMAKE : fatal error U1077:   
'...\win32\cmake\3.1.3\bin\cmake.exe' : return code '0xffffffff'  
Stop.  
NMAKE : fatal error U1077:   
'...win32\msvc120\VC\bin\nmake.exe' : return code '0x2'  
Stop.  

Я понятия не имею, что вызывает вышеуказанную ошибку.

Есть ли способ собрать больше информации о том, что вызывает вышеуказанную ошибку (точный файл, который вызывает эту ошибку), или есть известное решение для ее устранения?

Команда запуска: "nmake / K install"

CMakeLists.txt используется:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
include (GenerateExportHeader)

set(CMAKE_USER_MAKE_RULES_OVERRIDE ${CMAKE_CURRENT_SOURCE_DIR}/CMake/c_flags_override.cmake)
set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX ${CMAKE_CURRENT_SOURCE_DIR}/CMake/cxx_flags_override.cmake)

PROJECT(TestProject)

SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMake" "${CMAKE_MODULE_PATH}")

SET(STATIC_MSVC_RUNTIME True)

set(CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1")
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT     "/MT /Zi /O1 /Ob1 /D NDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE_INIT        "/MT /Zi /O2 /Ob2 /D NDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG")
set(CMAKE_SHARED_LINKER_FLAGS "/OPT:NOREF /SAFESEH:NO /INCREMENTAL:NO")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")

FIND_PACKAGE(TestDependency REQUIRED)
FIND_PACKAGE(PNG REQUIRED)
FIND_PACKAGE(SSL REQUIRED)
FIND_PACKAGE(FREEGLUT REQUIRED)
FIND_PACKAGE(OPENCV REQUIRED)

SET (SOURCES "${SOURCES}"
    "BaseTest.cpp"
    "StreamFlow.cpp"
    "UIManager.cpp"
    )

include_directories(.)
INCLUDE_DIRECTORIES(
    "${TestDependency_INCLUDE}"
    "${PNG_INCLUDE}"
    "${FREEGLUT_INCLUDE}"
    "${OPENCV_INCLUDE}"
    "$ENV{JAVA_HOME}/include"
    "$ENV{JAVA_HOME}/include/win32"
    "$ENV{TestDependencyInstallBase/../TestDependency/core"
    "$ENV{TEST_DIR}"
    "$ENV{TEST_DIR}/Tests"
)

add_subdirectory("$ENV{TEST_DIR}" Test)

add_compiler_export_flags()

TARGET_LINK_LIBRARIES(test
    ${TestDependency_LIBRARY}
    ${LIBPNG_LIBRARY}
    ${ZLIB_LIBRARY}
        ${SSL_LIBRARY}
        ${FREEGLUT_LIBRARY}
        ${OPENCV_CORE_LIBRARY}
        ${OPENCV_HIGHGUI_LIBRARY}
        ${OPENCV_IMGPROC_LIBRARY}
        ${EAY_LIBRARY}
        ws2_32
        rpcrt4
        Winmm
        Dsound
    )

SET (OPENCV_DLL_64 thirdparty/Opencv/bin/x64/vc12/Release/opencv_core2411.dll thirdparty/Opencv/bin/x64/vc12/Release/opencv_highgui2411.dll thirdparty/Opencv/bin/x64/vc12/Release/opencv_imgproc2411.dll)

IF (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x64")
    MESSAGE("using x64.")
    INSTALL(TARGETS test DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Release/x64 CONFIGURATIONS Release)
    INSTALL(FILES 
        thirdparty/freeglut/bin/x64/freeglut.dll
        ${OPENCV_DLL_64}
        build/x86_64/Release/test.pdb
        DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/Release/x64)
ENDIF()

Примечание. Это работало ранее, но после внесения изменений в код TestDependancy он начал выдавать эту ошибку.

0 ответов

Другие вопросы по тегам