Search code examples
c++visual-studiovisual-studio-2012intel-media-sdk

Error in visual studio 2015 which goes away in 2012


I am running the following code on my Windows10 machine with API version 1.19 of 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();
}

I made the project in Visual Studio 2015 but received following errors

Severity Error Code
Description
Project
File path
Program Line

The errors have been written in above format.

Error LNK1120
2 unresolved externals
ScreenCapture
~\Visual Studio\ScreenCapture\x64\Debug\ScreenCapture.exe
1

Error LNK2019
unresolved external symbol __imp_printf referenced in function main
ScreenCapture
~\Visual Studio\ScreenCapture\ScreenCapture\main.obj
1

Error LNK2019
unresolved external symbol swscanf_s referenced in function "private: bool __cdecl MFX::MFXPluginsInFS::ParseKVPair(wchar_t *,wchar_t *,class MFX::PluginDescriptionRecord &)" (?ParseKVPair@MFXPluginsInFS@MFX@@AEAA_NPEA_W0AEAVPluginDescriptionRecord@2@@Z)
ScreenCapture
~\Visual Studio\ScreenCapture\ScreenCapture\libmfx.lib(mfx_plugin_hive.obj)
1

Warning LNK4098
defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
ScreenCapture
~\Visual Studio\ScreenCapture\ScreenCapture\LINK
1

However, in Visual Studio 2012 the aforementioned code runs fine. Please advise what should I do to upgrade my project to Visual Studio 2015?

I faced LNK2019 in Visual Studio 2017RC (Refer here) so I rolled back to Visual Studio 2015 and 2012. Solutions available for the errors on this or other forums have not worked for me until now. For warning LNK4098, I couldn't conclude which libraries to ignore.


Solution

  • VS 2015 and VS 2017 use the Universal CRT which is not binary or link compatible with older Visual Studio CRT implementations. Generally speaking, CRTs are not compatible between major version of the compiler.

    IOW: that version of Intel Media SDK doesn't support VS 2015.