theRealGreenz1 Ответов: 1

Ошибка в visual studio 2015, которая исчезает в 2012 году


Я запускаю следующий код на своей машине Windows10 с API версии 1.19 Intel Media SDK.
#include<stdio.h>
#include"mfxvideo++.h"

void main() {
    printf("this is a new program using intel media sdk");

    mfxSession SWsess;
    mfxVersion SWver = {0,1}, ver;
    mfxStatus sts;

    sts = MFXInit(MFX_IMPL_SOFTWARE, &SWver, &SWsess);
 
    if (MFX_ERR_NONE == sts) {
        MFXQueryVersion(SWsess, &ver);
        printf("Implementation version: %d.%d and API version: %d.%d", SWver.Major, SWver.Minor, ver.Major, ver.Minor);
    }
 
    MFXClose(SWsess);
 
    getchar();
}
Я сделал проект в Visual Studio 2015, но получил следующие ошибки

Код Ошибки Серьезности
Описание
Проект
Путь к файлу
программная строка

Ошибки были написаны в вышеуказанном формате.

Ошибка LNK1120
2 неразрешенных внешних ссылок
Программа
~ \ Визуальный Studio\ScreenCapture\x64\Debug\ScreenCapture.exe
1

Ошибка lnk2019 ошибка
неразрешенный внешний символ _ _ imp_printf, на который ссылается функция main
Программа
~\Визуальная студия\программа\Программа\основные.параметр obj
1

Ошибка lnk2019 ошибка
неразрешенный внешний символ swscanf_s, на который ссылается функция "private: bool _ _ cdecl MFX:: MFXPluginsInFS:: ParseKVPair(wchar_t *, wchar_t *, class MFX:: PluginDescriptionRecord &)" (? ParseKVPair@MFXPluginsInFS@MFX@@AEAA_NPEA_W0AEAVPluginDescriptionrecord@2@@Z)
Программа
~\Визуальная студия\программа\Программа\libmfx.Либ(mfx_plugin_hive.параметр obj)
1

Предупреждение LNK4098
defaultlib 'LIBCMT' конфликтует с использованием других библиотек; use /NODEFAULTLIB:library
Программа
~\Визуальная студия\программа\Программа\ссылка
1

Однако в Visual Studio 2012 вышеупомянутый код работает нормально. Пожалуйста, посоветуйте, что мне делать, чтобы обновить свой проект до Visual Studio 2015?

Что я уже пробовал:

Я столкнулся с LNK2019 в Visual Studio 2017RC (Смотрите здесь) поэтому я откатился назад к Visual Studio 2015 и 2012. Решения, доступные для ошибок на этом или других форумах, не работают для меня. Для предупреждения LNK4098 я не мог решить, какие библиотеки игнорировать.

1 Ответов

Рейтинг:
0

Daniel Pfeffer

LNK4098 это означает, что существует несоответствие между версиями LIBC, ожидаемыми различными компонентами вашей программы. Обычно это происходит, когда одна статическая библиотека компилируется против статической LIBC, а другая библиотека (или основная программа) компилируется против версии DLL.

Чтобы исправить это, посмотрите на конфигурацию для вашей основной программы и для каждой библиотеки/DLL в вашем решении. Все они должны быть связаны с одними и теми же библиотеками (либо все DLL, либо все статические). Если у вас есть библиотека только в двоичном виде, ее документация должна сообщить вам, какая версия библиотеки ей требуется.

Как только вы разберетесь с этим, все остальные проблемы тоже должны разобраться сами.