Главная » Статьи » IT |
d3dx9-dynamic-load
Класс для динамической загрузки и использования функционала D3DX9. Часто приложение завершается с некорректным сообщением, что DLL не найдена.Проблема решается не статическим подключением d3dx9xx.dll, а динамическим. Библиотека поддерживает все функции D3DX9. Принцип очень прост: Класс ищет самую свежую версию DLL, затем загружает её и ищет точки входа для всех функций. Пример использования: #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; } | |
Просмотров: 299 | | |
Всего комментариев: 0 | |