Вопрос:

неопределенная ссылка на `__std_terminate '

c++ visual-c++ cmake

16 просмотра

1 ответ

77 Репутация автора

Я создаю библиотеку Win32 C ++, которая будет связана с другим кодом с помощью MSVC. Сборка создана CMake, и я создаю .lib, который был скомпилирован с / MT run-time. BUILD_SHARED_LIBS отключен.

Когда я связываю эту библиотеку с внешней программой на языке C (все в порядке, это не актуально. C это этот BASIC-диалект, который испускает код C, но я отвлекаюсь). Я получаю кратность следующих ошибок компоновщика:

undefined reference to `__std_terminate'
undefined reference to `_Smtx_lock_exclusive'
undefined reference to `??3@YAXPAXI@Z'
undefined reference to `@__security_check_cookie@4'
undefined reference to `__CxxFrameHandler3'

Все это заставляет меня поверить, что что-то на самом деле не было статически связано, когда я построил библиотеку.

Кто-нибудь знает, что мне не хватает?

Автор: Christopher Brown Источник Размещён: 06.12.2018 06:01

Ответы (1)


0 плюса

12366 Репутация автора

Во-первых, этот .lib содержит только ваш код. Затем при связывании вашей C-программы связаны время работы .lib и C, но код по-прежнему не содержит символов из среды выполнения C ++. В качестве решения свяжите свою C-программу с C ++ или явно вставьте в C ++ среду выполнения.

Автор: Ulrich Eckhardt Размещён: 06.12.2018 06:22
Вопросы из категории :
32x32