huangyhg 发表于 2003-11-8 13:44:00

to easypower: 这样加载一个MFCDLL.dll(实现弹出一对话框)为何fail啊?

这样加载一个MFCDLL.dll(实现弹出一对话框)为何fail啊?
在响应函数中添加如下代码:(还将MFCDLL.dll拷贝到debug目录下)
typedef void (WINAPI * TESTDLL)();
HINSTANCE hmod;
hmod = ::LoadLibrary ("MFCDLL.dll");
if(hmod==NULL)
{
AfxMessageBox("Fail");
}
TESTDLL lpproc;
lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
if(lpproc!=(TESTDLL)NULL)
(*lpproc)();

FreeLibrary(hmod);
MFCDLL.dll中的响应函数如下所示:
extern "C" __declspec(dllexport) void Show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CTest test;
test.DoModal ();
}


在纯vc的exe文件中能成功调用MFCDLL.dll,为何到arx中不行了呢????(疑惑.......)
程序代码照着下面的网址上的讲解添加的
http://www.vckbase.com/document/viewdoc.asp?id=543

lilin 发表于 2003-11-8 15:32:00

你没有设置当前的运行环境的:
你现在用下面的代码试一试
]:
TESTDLL lpproc;
//得到资源的HANDLE
::afxSetResourcehandle(hmod);
lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
//返回CAD的HANDLE
afxSetResourcehandle(acedGetAcadResourceInstance());
if(lpproc!=(TESTDLL)NULL)
(*lpproc)();

FreeLibrary(hmod);

huangyhg 发表于 2003-11-9 21:54:00

typedef void (WINAPI * TESTDLL)();
        HINSTANCE hmod;
        hmod = ::LoadLibrary ("MFCDLL.dll");
        if(hmod==NULL)
        {
                AfxMessageBox("Fail");
        }


        TESTDLL lpproc;
//得到资源的HANDLE
::AfxSetResourceHandle(hmod);
lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
//返回CAD的HANDLE
AfxSetResourceHandle(acedGetAcadResourceInstance());
if(lpproc!=(TESTDLL)NULL)
(*lpproc)();

FreeLibrary(hmod);
是这样吗?
为何还是AfxMessageBox("Fail");????????

lilin 发表于 2003-11-10 11:18:00

AfxMessageBox(NULL,"sdfsdf","dsfsdf",MB_OK);

huangyhg 发表于 2003-11-10 11:47:00

vc帮助项只见有
int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );

int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) -1 );

Return Value

未曾见AfxMessageBox(NULL,"sdfsdf","dsfsdf",MB_OK);带四个参数的啊?

huangyhg 发表于 2003-11-10 17:19:00

看了arx帮助项后,
理论上应该可以的了啊?为何还是弹出fail对话框?
如何在arx中插入断点和打开watch窗口?

10house 发表于 2003-11-10 22:10:00

呵呵,两个方法可以解决你的问题:
1,将你的dll文件复制到windows的系统目录下;
或者
2,在程序里面设置一下当前目录为dll所在的目录,

试一下 没错的

huangyhg 发表于 2003-11-11 08:15:00

确实ok了,非常感谢10house!!!
用的是——将我的dll文件复制到windows的系统目录下
but
sorry!
2,在程序里面设置一下当前目录为dll所在的目录,这个......如何设置呢?
页: [1]
查看完整版本: to easypower: 这样加载一个MFCDLL.dll(实现弹出一对话框)为何fail啊?