用AppWizard生成了一个mfcappwizard(dll),向连入vc的程序中去。我是这么作的:
一、用AppWizard生成了一个mfcappwizard(dll),命名为MyDll
1、在MyDll.cpp中添加函数:
void DllTest(void)
{
AfxMessageBox("this is a dll function");
}
2、在MyDll.def中添加
;DllTest @1
二、建立一个应用程序UseDll,添加一个按钮,
1、在view.cpp中定义变量如下:
HINSTANCE dll_handle=NULL;
typedef void (*DLLTEST)(void);
DLLTEST DllTest;
2、在OnButton()中添加代码:
Dll_handle=LoadLibrary("...\...\...\Mydll.dll");//dll文件的路径
DllTest=(DLLTEST)GetProcAddress(Dll_handle,"DllTest");
DllTest();
FreeLibrary(Dll_handle);在程序中执行到OnButton()时,系统就提示内存不能读,请问如何解决?
一、用AppWizard生成了一个mfcappwizard(dll),命名为MyDll
1、在MyDll.cpp中添加函数:
void DllTest(void)
{
AfxMessageBox("this is a dll function");
}
2、在MyDll.def中添加
;DllTest @1
二、建立一个应用程序UseDll,添加一个按钮,
1、在view.cpp中定义变量如下:
HINSTANCE dll_handle=NULL;
typedef void (*DLLTEST)(void);
DLLTEST DllTest;
2、在OnButton()中添加代码:
Dll_handle=LoadLibrary("...\...\...\Mydll.dll");//dll文件的路径
DllTest=(DLLTEST)GetProcAddress(Dll_handle,"DllTest");
DllTest();
FreeLibrary(Dll_handle);在程序中执行到OnButton()时,系统就提示内存不能读,请问如何解决?
解决方案 »
- MFC的CWnd::SubclassDlgItem(),对应win32 api的什么函数?
- directx在摄像头视频中怎么实现十字线
- 高分请教
- vc2005导入图标的问题
- 请教:ATL工程中定时器的使用
- 如何将长度为一个字节的整数转换成网络字节序?
- 工程建好如何改变工程的名称?
- 现在试用中,急需资料,感谢网友支持,按约送分
- 为什么要为一个类创建多个对象,我觉得有这个类有一个全局对象不就够了吗?以后谁要用这个类里面的成员函数,就通过这个全局对象调用不就可以了吗?谁给我讲一下,为什么要生成多个对象?在什么情况下?不好意思,csdn只让我最多给26分
- ado问题,请指教
- 我有问题,谁来帮我一下。
- 请问,我怎么才能看到MFC源码??(其中的一些类和结构。。。)
2,dll代码改成
__declspec( dllimport ) void DllTest(void)
{
AfxMessageBox("this is a dll function");
}试试。
上面跟在";"后是表示注识,这样写不起作用函数定义成:
extern "c" AFX_API_EXPORT void DllTest(void);
DEF文件中的,如果行的开头是个;,相当于CPP中的//,是注释.拿掉它.函数要不要定义为extern "C",你可以试试,我的概念是如果有了DEF文件,应该是可以不要这个修饰的.
DllTest=(DLLTEST)GetProcAddress(Dll_handle,"DllTest");
//此句应该检测一下是否成功取到函数指针。
就不用在def文件中定义了(省得麻烦)
就不用在def文件中定义了(省得麻烦)