theRealGreenz1 Ответов: 2

Ошибка LNK2019 с использованием visual studio 2017RC


Для приведенного ниже кода я получаю ошибку LNK2019. Составитель не удается распознать MFXInit, MFXClose, MFXQueryVersion. Он не показывает ошибку для других функций в "mfxvideo.h".

#include "mfxvideo.h"
#include<stdio.h>

//Please refer the mediasdk-man.pdf provided under *\IntelSWTools\Intel(R)_Media_SDK_2016.0.2\doc
//The program is meant for educational purposes. At the time it was written the author was learning the...
//used API.
//Based on **Intel Media SDK**


int main() {
	//Here the version of the API used is defined for the software and hardware version
	mfxVersion SWversion = { 0,1 }, version, HWversion = { 0,1 };
	
	//Initializing a session. This should be done for all the programs written using this API
	mfxSession SWsession, HWsession;
	
	// is used to monitor the progress of program and analyse errors, if any arise.
	//Based on the progress we decide the optimal path for progressing our code(With practice...
	//...this will become clearer)
	mfxStatus sts;

	//Setting the value for 'sts' using  we initialize the SDK session
	// takes following arguments (desired implementation[here we have chosen software]...
	//... , pointer for desired version, pointer for desired session)
	sts = MFXInit(MFX_IMPL_SOFTWARE, &SWversion, &SWsession);

	//Now using the 'sts; we check for errors. As mentioned earlier based on the value of sts...
	//... we allow our program to choose the optimal path for proceeding
	// signifies that there are no error observed by the variable 'sts'
	if (MFX_ERR_NONE == sts)
	{
		// finds out the implementation version of the SDK for a given session
		MFXQueryVersion(SWsession, &version);
		printf("SW version: %d.%d \n API level: %d.%d\n",
			SWversion.Major, SWversion.Minor, version.Major, version.Minor);
	}

	//Repeating the above procedure for hardware based implpementation
	
	sts = MFXInit(MFX_IMPL_HARDWARE, &HWversion, &HWsession);

	if (MFX_ERR_NONE == sts)
	{
		MFXQueryVersion(HWsession, &version);
		printf("HW version: %d.%d \n API level: %d.%d\n",
			HWversion.Major, HWversion.Minor, version.Major, version.Minor);
	}

	MFXClose(SWsession);
	MFXClose(HWsession);

	return 0;
}


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

1-я связал проект, перейдя к
Решение и GT;Правой Кнопкой Мыши>Свойства&ГТ;а) и Б)
А) С/С++и gt;Общие>В дополнительные каталоги включения&ГТ; *\IntelSWTools\Интел%28Р%29_Media_SDK_2016.0.2\включать;%(AdditionalIncludeDirectories)
б)Компоновщик и gt;Общие>В дополнительные каталоги библиотек&ГТ; *\IntelSWTools\Интел%28Р%29_Media_SDK_2016.0.2\Сайт lib;%(AdditionalLibraryDirectories)
2-Веб-страница документации Visual Studio 2017RC
3-выполнена программа на разных версиях Visual Studio (а именно 2012) и Code:: Blocks 13.12 (в Code:: Blocks компилятор не может распознать указанные функции)

Afzaal Ahmad Zeeshan

Visual Studio 2017, не публикуется и гарантированно ломает многие вещи время от времени. Попробуйте использовать Visual Studio 2015 до тех пор, пока на некоторое время и посмотреть, если это работает или нет.

theRealGreenz1

Спасибо, Afzaal Зишан Ахмед за ВАШ интерес в этом вопросе. Я постараюсь найти систему с VS2015 и вернуться назад. Пожалуйста, учтите, что Code:: Blocks также показал аналогичную ошибку вместе с Visual Studio 2012.

theRealGreenz1

Конкретный вопрос, связанный с моей проблемой, был решен. Спасибо за Ваш вклад.

Richard MacCutchan

Вы не добавили фактическое имя библиотеки MFX в свойствах компоновщика.

theRealGreenz1

Спасибо Ричарду за проявленный интерес. Разве "1b" в разделе "Что я пробовал" не указывает на то же самое? Следующий каталог: '*\IntelSWTools\Интел%28Р%29_Media_SDK_2016.0.2\Либ\х64 имеет libmfx необходимые библиотеки.Либ'.

Richard MacCutchan

Все в порядке, вы скажете линкеру, где искать. Но вы также должны сказать ему, что смотреть для. Поэтому вам нужно добавить имя библиотеки в Компоновщик- & gt;Input & gt;Дополнительные зависимости

theRealGreenz1

Я сделаю это и вернусь назад, если столкнусь с какой-либо ошибкой

theRealGreenz1

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

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

Ошибка LNK1120 1 неразрешенные внешние элементы HelloWorld_Intel_SDK G:\Visual Studio\Projects\HelloWorld_Intel_SDK\x64\Debug\HelloWorld_Intel_SDK.exe 1

Richard MacCutchan

Аналогичная проблема с предыдущей, но также может заключаться в том, что вы включаете что-то, чего там быть не должно. Вместо того, чтобы просто использовать компоновщик для поиска ошибок, вам нужно тщательно изучить свой проект, чтобы убедиться, что его структура правильна и логична.

theRealGreenz1

Я постараюсь найти ошибки в коде.

Richard MacCutchan

Это неподходящее место для поисков. Проблема в том, что у вас есть несколько библиотек, конфликтующих друг с другом, а не ошибки в коде.

theRealGreenz1

Как избавиться от нескольких библиотек? Все заголовочные файлы, предоставляемые intel, взаимосвязаны.

Richard MacCutchan

Заголовочные файлы не имеют ничего общего с библиотеками. Заголовочные файлы содержат определения исходного кода, используемые компилятором. Библиотеки содержат скомпилированные объекты, используемые компоновщиком. Вам нужно использовать документацию, чтобы узнать, какие библиотеки взаимосвязаны.

theRealGreenz1

Я проверю документацию на наличие таких ошибок.

theRealGreenz1

Конкретный вопрос, связанный с моей проблемой, был решен. Спасибо за Ваш вклад.

RedDk

Вы когда-нибудь видели LNK2019 раньше?

Сначала посмотри сюда.

https://msdn.microsoft.com/en-us/library/799kze2z.aspx

theRealGreenz1

Спасибо RedDk за ВАШ интерес к этому вопросу. Я только что просмотрел контент, связанный с этой ошибкой для 2017RC. Я вернусь назад, если найду это полезным.

RedDk

Пока это не ответ на (мой) вопрос ... идти куда-то-это то, что вы хотите сделать, но я предлагаю добавить "/Verbose" в командную строку, а затем написать пути к ней .lib, который содержит определения, которые появляются как чужеродные под этим дополнением. Только для начала ...

theRealGreenz1

Нет, я никогда раньше не видел LNK2019. Пожалуйста, смотрите раздел " 2 "в разделе" Что я сделал". Ваша ссылка перенаправляет меня на веб-страницу, связанную с той же ошибкой, но для VS2015.

theRealGreenz1

Конкретный вопрос, связанный с моей проблемой, был решен. Спасибо за Ваш вклад.

2 Ответов

Рейтинг:
13

OriginalGriff

Так что попробуйте точно то же самое в VS2015 и посмотрите, работает ли это.
Если это так,то сообщите о проблеме MS, чтобы они могли исправить ее до выпуска.
Если это не так, то, вероятно, вы забыли связать библиотеку или что-то подобное.
в любом случае, мы, вероятно, не те люди, с которыми вам нужно поговорить.


theRealGreenz1

Спасибо OriginalGriff за ваш ответ. Я попробовал VS2012 и Code:: Blocks 13.12. Я постараюсь найти систему с VS2015 и вернуться назад как можно скорее.

Рейтинг:
0

Member 2493326

добавьте legacy_stdio_definitions.Либ тогда о'Кей.


Graeme_Grant

Этому вопросу уже более 7 месяцев, и ОП уже приняла ответ. Пожалуйста, не предлагайте решения старых надгробных вопросов или вопросов, на которые уже приняты ответы. Пожалуйста, направьте свои усилия на текущие вопросы, которые требуют помощи.