在DLL中如何调用它自身以资源方式包含的一个DLL??? 我设计了一个MY.DLL,此DLL调用了一个第三方的OTHER.DLL.我不想发布自己的DLL时显示地附带第三方的DLL,因此我将OHTER.DLL以资源的方式包含在MY.DLL,但是现在的问题是,怎么样调用OTHER.DLL呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像不行呢将Other.dll从资源文件中写成一个临时文件,然后LoadLibrary? 不错的想法!实现了共享一下!要是实在不行就找dll对应的.lib和 .h吧 将文件作为自定义二进制资源加入到,通过用FindResource等函数得到资源的内存地址和大小,然后用fopen/fwrite等函数将资源写成临时文件,参考下面的部分代码:Res2File( MAKEINTRESOURCE(ID_RES_DATA), "RES_DATA", "C:\\ResData.dat" ) BOOL Res2File( LPCTSTR lpName, LPCTSTR lpType, LPCTSTR filename ) { HRSRC hRes = ::FindResource( NULL, lpName, lpType ); HGLOBAL gl =::LoadResource( NULL, hRes ); LPVOID lp = ::LockResource( gl ); HANDLE fp = ::CreateFile( filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL ); if( fp == INVALID_HANDLE_VALUE ) return FALSE; DWORD a; if( !::WriteFile( fp, lp, SizeofResource( NULL, hRes ), &a, NULL ) ) return FALSE; CloseHandle( fp ); FreeResource( gl ); return TRUE; } 支持樓上,不過在動態庫A中調用動態庫B,要注意主程度與動態庫是兩個不同的進程地址空間,也就是說FindResource函數的第一個參數不能為NULL,必須以動態庫的HMODULE為參數,否則FindResource是從主程序中找資源,會返回失敗. 我用各位提供的方法已经做好了,效果不错的!再有,怎样用静态连接的方式包含第三方的DLL呢?要是第三方不提供静态方式的DLL,估计是做不到的。 SetFileSecurity GetLastError()返回5拒绝访问 问一个有关运算符重载的问题 请教CHtmlView派生控件的内存释放问题 求职 高手们为什么不看我的问题 求COM和SOCKET结合编程的实例 是VC编译器不符合ANSI C++,还是?? 长连接时如何实现Socket(TCP协议)中心跳包? mfc中为什么要有resource.h中定义的id? 我想问一下用opengl如何加键盘消息控制物体我是个新手哪位知道麻烦告诉一下好吗,非常感谢 有时会出现在对话框上添加一个按钮后,双击它无法跳到事件函数处 哪位大哥有关于ARP的源代码
将Other.dll从资源文件中写成一个临时文件,然后LoadLibrary?
Res2File( MAKEINTRESOURCE(ID_RES_DATA), "RES_DATA", "C:\\ResData.dat" ) BOOL Res2File( LPCTSTR lpName, LPCTSTR lpType, LPCTSTR filename )
{
HRSRC hRes = ::FindResource( NULL, lpName, lpType );
HGLOBAL gl =::LoadResource( NULL, hRes );
LPVOID lp = ::LockResource( gl );
HANDLE fp = ::CreateFile( filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );
if( fp == INVALID_HANDLE_VALUE )
return FALSE; DWORD a;
if( !::WriteFile( fp, lp, SizeofResource( NULL, hRes ), &a, NULL ) )
return FALSE; CloseHandle( fp );
FreeResource( gl );
return TRUE;
}
再有,怎样用静态连接的方式包含第三方的DLL呢?
要是第三方不提供静态方式的DLL,估计是做不到的。