dll里为什么不能加载资源
很奇怪。
我新建了一个DLL扩展,然后在里面新建了一个对话框,在.h里将其设置为AFX_EXT_CLASS,
但是编译发现:
e:\vc6.0\dialog练习\dll_dlg\dlg1d.h(21) : error C2065: 'IDD_Dlg1' : undeclared identifier
e:\vc6.0\dialog练习\dll_dlg\dlg1d.h(21) : error C2057: expected constant expression
怎么会这样呢,高手帮忙下。
怎么会找不到这个ID呢,郁闷啊~~~~明明有的,汗!!
[解决办法]
编译错误,看看resource.h包含正确不。
[解决办法]
资源中是否有对应的名称的对话框ID,修改出对应的对话框名称
[解决办法]
尴尬,这种编译错误应该不是很难把?定位错误地点,原因稍微分析就晓得了吧?
[解决办法]
看看其他的对话框中有没重名的,修改出对应的对话框名称
[解决办法]
#include "resource.h"
[解决办法]
调用DLL的时候若报错,你要思考是否你的用法是否正确。
你是如何使用Dll中资源的?
[解决办法]
假设你在dll里面实现的导出类名为: CDlgDLL
主要的问题就是, 你的exe在实例化CDlgDLL的时候
在CDlgDLL::Create或DoModal的时候, 默认是查找exe的资源, 当然就查不到你的IDD_Dlg1
导致创建失败, 发生意想不到的后果
解决方法:
1.在DLL导出一个全局函数, 如Create_CDlgDLL, 由它实例化CDlgDLL
2.在exe中, 通过AfxSetResourceHandle 设置你的DLL handle后, 再实例化CDlgDLL
[解决办法]