求大家帮帮我:vc掉dll的问题

qiqi425 2002-04-03 01:32:05

extern "C" int PASCAL EXPORT loadadd(int x,int y,int z) //在vb中调用
{
typedef int ( * lpFunc)(int ,int ,int );
HINSTANCE hLibrary;
lpFunc Func;

int temp;
hLibrary = LoadLibrary("add.dll"); // Load the DLL now

if (hLibrary != NULL)
{
Func = (lpFunc) GetProcAddress(hLibrary, "add"); //得到add函数的地址
if (Func != NULL)
{
temp=Func(x,y,z);
}
}
return temp; //返回给vb显示
FreeLibrary(hLibrary); // Unload DLL from memory
}
这是我的一个test1.dll,要被vb调用,还要调用add.dll。即数要从vb传到test1再到add,运算后传回test1再到vb.现在的问题是:数传回时vb提示说有错,debug error.调试看是temp=Func(x,y,z);过不去了,若忽略,可以看到temp=返回值,但到不了vb.请问:temp=Func()是不是用的不对?能不能换一种方法?(vb那边没用问题)不胜感激!!



...全文
110 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lid617914 2002-04-03
  • 打赏
  • 举报
回复
返回到VB是值是多少??
qiqi425 2002-04-03
  • 打赏
  • 举报
回复
typedef int ( * lpFunc)(int ,int ,int );是cdecl型,调用的add函数的返回值是int型的

scklotz 2002-04-03
  • 打赏
  • 举报
回复
你的调用类型是不是和你的函数定义类型不一致。

typedef int ( * lpFunc)(int ,int ,int );

比如你的原来 dll 定义是 _cdecl 类型或者 _stacall 类型。
qiqi425 2002-04-03
  • 打赏
  • 举报
回复
用了,.def是自动生成的,我又加了loadadd @1,返回值怎末了?
error0 2002-04-03
  • 打赏
  • 举报
回复
是不是返回值的类型有问题。

有没有用 .def 文件
qiqi425 2002-04-03
  • 打赏
  • 举报
回复
谢谢了
qiqi425 2002-04-03
  • 打赏
  • 举报
回复
帮帮我

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧