您的位置:程序门 -> vc/mfc -> 进程/线程/dll



dll基础编程报错,请大虾们指点迷津


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


dll基础编程报错,请大虾们指点迷津
发表于:2007-04-18 11:09:19 楼主
dll文件

.h

public:
virtual   bool   initinstance();
  _declspec(dllexport)   int   addvalue(int   a,int   b);   //声明了一下
declare_message_map()

.cpp
int   ctestdllapp::addvalue(int   a,int   b)
{
int   c;
c=a+b;
return   c;
}


测试程序

void   ctdllcxdlg::onbnclickedbutton1()
{
//   todo:   在此添加控件通知处理程序代码
typedef   int(*   addvalue)(int   a,int   b);
hinstance   hdll=null;
        addvalue   add1=null;
        int   e=5;
int   f=2;
        int   m;
cstring   str1=null;
        hdll=loadlibrary( "testdll.dll ");
if(hdll==null)
{
messagebox( "could   not   load   dll ");
}

        add1=(addvalue)getprocaddress(hdll, "addvalue ");  
        m=add1(e,f);
          str1.format( "%d ",m);
        messagebox(str1);
freelibrary(hdll);
}


dll文件编译也通过了,loadlibrary也成了
但是运行到m=add1(e,f)真正使用这个函数时就异常终止了
问为什么??
发表于:2007-04-18 11:13:391楼 得分:0
.h

public:
virtual   bool   initinstance();
  _declspec(dllexport)   int   addvalue(int   a,int   b);   //声明了一下
declare_message_map()

.cpp
int   ctestdllapp::addvalue(int   a,int   b)
{
int   c;
c=a+b;
return   c;
}


这是?????是基于mfc做的吗?
发表于:2007-04-18 11:15:162楼 得分:0
add1是什么?
发表于:2007-04-18 11:19:233楼 得分:0
addvalue   add1=null;   是传说中的指针吗?
发表于:2007-04-18 11:27:314楼 得分:0
调用之前,先判断add1是否为null
addvalue函数是类的成员变量,得先导出ctestdllapp类吧
发表于:2007-04-18 11:34:005楼 得分:0
看你的样子,似乎没有必要包装成类吧?
直接导出函数就可以了
还有,如果你这样用的话,要用extern   "c "导出
发表于:2007-04-18 17:27:576楼 得分:0
加了extern   "c "也不管用

用dumpin了一下,方法没导出来,用时为空

extern   "c "   _declspec(dllexport)   int   addvalue(int   a,int   b);这句导完没用

但http://www.bc-cn.net/article/net/vcnet/jszl/200607/4215.html
编程中国上的教程上也没有导出类,方法也封在类里。难道他丫写假东西骗我??

大哥们,怎么导出类啊?或者怎么导出才正确?
发表于:2007-04-18 20:06:247楼 得分:0
class   afx_ext_class   cmyclass   :   public   cdocument
{
//   <body   of   class>
};

用afx_ext_class导出类
发表于:2007-04-20 00:24:318楼 得分:0
你用mfc的dll,当然错拉
这么简单的,改用c的吧


快速检索

最新资讯
热门点击