Убедитесь, что вы соответствуете настройке вашего проекта тому, что используют все ваши зависимости (на самом деле вы должны соответствовать зависимости:)).
Настройки, которые могут вызвать проблемы с линковкой с помощью MS toolchain (кроме очевидного отсутствия ссылок на библиотеки):
- Использовать юникод / многобайтовый набор символов
- Рассматривайте wchar_t как встроенный тип.
Когда вы знаете , что чертовски неразрешенный-wchar_t * -contents-symbol находится в проклятой библиотеке, с которой вы только что соединились, это, вероятно, одна из этих двух.
- Runtime (многопоточный [debug] [dll]).
Это причина вашего предупреждения LIBCMTD. И для отсутствующих / конфликтующих символов, таких как __free или malloc или других стандартных вещей. И по непонятным причинам не происходит сбоев при пересечении границ dll или даже в пустом месте, если вам как-то удается связать 2 разных времени выполнения в один двоичный файл (я видел это!).
- Подозрительные определения препроцессора, такие как _LIB, _DLL, QT_DLL и т. Д.
Они используются некоторыми библиотеками, чтобы решить, должен ли код быть связан статически или динамически. Они обычно влияют на заголовки, которые сопровождают lib или dll. Вы должны знать, нужны ли они вам или нет. RTFM или посмотрите конфиги для рабочих примеров проектов для тех.
Итак, для вашей проблемы, сначала убедитесь, что вы добавили все библиотеки wxWidget, которые вам нужны (и любые зависимости, которые им нужны). Найдите любой из пропущенных символов и позвольте Google направить вас. У кого-то была бы такая же проблема, и он бы опубликовал это где-нибудь, прежде чем сам это выяснить.
Хороший поисковый запрос:
virtual bool __thiscall wxApp::Initialize
Особое внимание требуется для выполнения. Когда у вас есть все необходимые библиотеки, но вы получаете предупреждения или конфликты libcmt * или msvc *, затем просмотрите все настройки ваших проектов и убедитесь, что 4 элемента, которые я перечислил, являются правильными и согласованными. Вы должны знать их и для зависимостей, если вы сами их не строили. Используйте флаг компоновки многословия, чтобы точно определить, кто вносит нежелательную среду выполнения.
Другие настройки компилятора и компоновщика тоже могут повлиять на ситуацию, поэтому сделайте все возможное с помощью расчески.
Большинство этих изменений требуют чистой перекомпиляции.
Это удовольствие от создания кода на C ++.