benjaminemanuel13 Ответов: 3

Нерешенные внешние проблемы для новичка...


Привет,

Я новичок в c++ , так что, пожалуйста, потерпите меня.

Я создаю некоторый c++, который использует включенные заголовки (dshow.h), но при связывании я получаю неразрешенные внешние объекты на IID и CLSID, которые я использую.

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

Я могу обмануть, заглянув в включенные файлы и создав свои собственные GUID.h файл например:
extern "C"
{
	extern const IID IID_IDvdGraphBuilder =
	{ 0xFCC152B6, 0xF372, 0x11d0,
	{ 0x8E, 0x00, 0x00, 0xC0, 0x4F, 0xD7, 0xC0, 0x8B } };

	extern const CLSID CLSID_DvdGraphBuilder =
	{ 0xFCC152B7, 0xF372, 0x11d0,
	{ 0x8E, 0x00, 0x00, 0xC0, 0x4F, 0xD7, 0xC0, 0x8B } };
}

Это работает, но это не очень хорошо в долгосрочной перспективе, что я упускаю?

RedDk

Не знаю, зачем кому-то взламывать свободно доступную кодовую базу для 3D-графической платформы (Microsoft DirectX распространяется в виде SDK для многочисленных видов ... MS sub-platforms), но я предполагаю, что вы используете Visual Studio, когда делаете этот трюк IID и CLSID ... перейдите на страницу свойств и в разделе Компоновщик/Командная строка введите следующие символы: /VERBOSE

Это подскажет компоновщику взорвать содержимое сообщения в окне вывода при следующей попытке компиляции. Вы все равно связываете это так ... библиотека, к которой пытается подключиться неразрешенный внешний объект, теперь будет иметь имя. Как только у тебя будет имя ... скажем, DXSHOW.lib или что-то в этом роде, вы можете вернуться и добавить его в список внешних библиотек ...

Что-то вроде того. Прошло уже некоторое время с тех пор, как я делал DxSDK sample compiles tbh ...

3 Ответов

Рейтинг:
2

User 7429338

покажу.h - это от Директ-шоу[^], который включен в пакет SDK для Windows.


benjaminemanuel13

Спасибо за ваш ответ, есть ли они .lib-файлы, на которые я должен ссылаться, чтобы избавить меня от нерешенных внешних проблем, которые я должен "взломать", чтобы исправить?

Рейтинг:
0

KarstenK

Вы работаете над проектом COM, который совсем не прост. Потратьте некоторое время и учитесь у хорошего человека. COM учебники.

Правильно определить эти значения, но убедитесь, что они уникальны, поскольку являются идентификаторами для создания экземпляров этих классов.

Всегда помните: если возникают ошибки, проверьте первый ненулевой код возврата (HRESULT) по этой причине.

Как и в "Карточном домике", многое может пойти не так. ;-)


benjaminemanuel13

Спасибо, значения, которые я использовал, на самом деле являются значениями IID и CLSID из dshow.h и strmif.h (включены в dshow.h), и они работают с кодом, который я написал. Я просто хотел знать, не упускаю ли я чего-то в отношении неразрешенных внешних элементов, которые появляются во время ссылки, которую я "взломал" для работы.

Рейтинг:
0

benjaminemanuel13

Я решил ее добавив:

#pragma comment(lib, "strmiids.lib")


Я удивлен, что файл lib не включен в документацию Microsoft.

Спасибо всем, кто откликнулся.