ksacvet777.moy.su
Главная » Статьи » IT

d3dx9-dynamic-load

Класс для динамической загрузки и использования функционала D3DX9.

Часто приложение завершается с некорректным сообщением, что DLL не найдена.Проблема решается не статическим подключением d3dx9xx.dll, а динамическим. 

Библиотека поддерживает все функции D3DX9.

Принцип очень прост: Класс ищет самую свежую версию DLL, затем загружает её и ищет точки входа для всех функций.

Страница на googlecode

Пример использования:


#include <d3dx9_dynamic_load.h>
using d3dx9_dynamic_load::CD3DX9_Dll_Loader;

using namespace std;

//! safe delete object
#define SAFE_DEL_OBJ(p) { if(NULL != p) { delete (p); (p)=NULL; } }

//! safe release interface
#define SAFE_REL(p) { if(NULL != p) { (p)->Release(); (p)=NULL; } }

//================================================================
int main(int argc, char* argv[])
{
// loader, may be class member .
CD3DX9_Dll_Loader* loader = NULL;

try 
// try load
loader = new CD3DX9_Dll_Loader();
}
catch(...)
{
// Error !((
cout<< "Error load lib\n"<< endl;
SAFE_DEL_OBJ(loader)
return -1;
}

// for example we are create matrix stack interface
ID3DXMatrixStack* pStack = NULL; 
if FAILED(loader->D3DXCreateMatrixStack(0, &pStack))
{
// error !! ((
if(pStack)
{
SAFE_DEL_OBJ( loader);
}

return -1;
}

// try usage ...
pStack->Push();
pStack->GetTop();
pStack->Pop();

// release interface before unload dll
SAFE_REL(pStack)


// remove loader. and d3dx9 dll also automaticaly unloaded.
SAFE_DEL_OBJ( loader);

return 0;
}

Категория: IT | Добавил: ksacvet777 (23.01.2014)
Просмотров: 281 | Теги: DLL, directx, d3dx9, d3dx9-dynamic-load | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: