在DLLTEST.dll中,我导出一个类
Class AFX_EXT_CLASS CmyClass{
public:
int ShowMsg(int nFlag);
CmyClass();
virtual ~CmyClass();
};在另外一个MFC程序中,我调用如下:
void CMainFrame::OnTestDll()
{
typedef int (*pFuncShowMsg)(int nFlag);
//路径是绝对正确的。
HINSTANCE hdll = LoadLibrary("F:\\TestDllOne\\Debug\\dll\\DllTest.dll"); pFuncShowMsg funcShowMsg;
//函数名也是通过DEPEND工具查看后,复制过来的。
funcShowMsg= (pFuncShowMsg)GetProcAddress(hdll,"?ShowOneMessage@CTestRec@@QAEHH@Z" ); int nFl = 1; if (funcShowMsg)
funcShowMsg(nFl);
FreeLibrary(hdll);
}结果在编译和链接时都没有error和warninig.
但是在运行时,总是报错“User breakpoint called from code at 0x1023160e”。是不是在显式调用指定DLL中某个类某个函数时,不能直接调用??
出错的调用栈显示在函数退出时报错,等待各位有经验的高手指点。不甚感谢!!
Class AFX_EXT_CLASS CmyClass{
public:
int ShowMsg(int nFlag);
CmyClass();
virtual ~CmyClass();
};在另外一个MFC程序中,我调用如下:
void CMainFrame::OnTestDll()
{
typedef int (*pFuncShowMsg)(int nFlag);
//路径是绝对正确的。
HINSTANCE hdll = LoadLibrary("F:\\TestDllOne\\Debug\\dll\\DllTest.dll"); pFuncShowMsg funcShowMsg;
//函数名也是通过DEPEND工具查看后,复制过来的。
funcShowMsg= (pFuncShowMsg)GetProcAddress(hdll,"?ShowOneMessage@CTestRec@@QAEHH@Z" ); int nFl = 1; if (funcShowMsg)
funcShowMsg(nFl);
FreeLibrary(hdll);
}结果在编译和链接时都没有error和warninig.
但是在运行时,总是报错“User breakpoint called from code at 0x1023160e”。是不是在显式调用指定DLL中某个类某个函数时,不能直接调用??
出错的调用栈显示在函数退出时报错,等待各位有经验的高手指点。不甚感谢!!
解决方案 »
- GetQueuedCompletionStatus
- win32的CreateFont()其对应的销毁函数是哪一个?
- 关于include的路径的问题
- mfc用CCriticalSection.Lock()同步线程,结果锁定了Access,在其他模块无法使用。错误信息是:无法更新,当前被锁定。请问怎样既同步线程,而又不锁定Access?
- 如何将一个现有的EXE可执行文件进行二次加密,加密采用硬件狗的方式.(可付费)
- 在view类中获取mainframe类指针的问题
- 一般的高手解决不了的问题:使用 Mfc的DLL 创建的对话框, 作为其他对话框的子窗口时, 按TAB键 无法正常工作 ***
- 如何显示窗口左上角的图标?
- 问个低级问题,急!!!!!!!!!!!!!!!!!
- 如何在MFC中写服务?
- 请问VC6.0有没有纯中文版的,而非汉化版的。
- 在access数据库中想加入一字段保存XML文件,请问该字段应该设为什么类型?
然后连接lib文件.lib.然后实例化导出类的一个对象。再通过对象调用类函数。
你所说的方式是可以的,但是那样的话dll文件只能放在自己的程序目录或者系统目录下.
我采用LoadLibrary()的方式进行链接是为了可以将DLL文件放在程序的子目录下。如dll\dlltest.dll
请问调用约定是什么概念,是否有需要设置的参数??
我的程序中调用的函数是没有问题的,在调用函数中报错时可以忽略,随后的FreeLibrary()也会出同样的错。后面出的错误是无法忽略的。
http://blog.csdn.net/goodname008/archive/2004/07/24/50662.aspx你把.dll放在程序目录中,用隐式调用也是可以的,不用LoadLibrary。
请问有别的方法解决吗??