Мне нужно статически связать SDL2 в DLL, но у меня появляется эта ошибка: LNK2019: unresolved external symbol __imp___acrt_iob_func referenced in function "void __cdecl `dynamic initializer for '__iob_func''(void)" (??__E__iob_func@@YAXXZ)
Странная часть в том, что когда я собираю .exe
, все работает нормально, но когдаЯ изменяю тип конфигурации на .dll
это не так.Я нашел следующий вопрос: неразрешенный внешний символ __imp__fprintf и __imp____iob_func, SDL2 , который выглядит как дубликат, но я не только создаю все с помощью того же компилятора (VS2017), но у меня также не возникает проблем, еслиЯ не связываю это статически.
Я пробовал там решения (перестройка - N / A, добавление определений, включая legacy_stdio_definitions.lib
), но безрезультатно.Я могу только предположить, что проблема заключается в коде, который я связываю статически (поскольку статическая сборка содержит все).
Если кто-то хочет воспроизвести, это просто, вам просто нужно собрать SDL-static и включитьбиблиотека в проекте DLL.Если вы включаете SDL2.lib (динамический), он работает, если вы включаете SDL2-static.lib в проект .exe
, он тоже работает.
PS: я использую тот же SDK и набор инструментов для компиляции обоихSDL и DLL, которая связывает его статически.Я восстановил все для каждого решения, которое я пробовал.