关于网友提出的“ dll隐式调用的一个问题”问题疑问,本网通过在网上对“ dll隐式调用的一个问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: dll隐式调用的一个问题
描述: dll是VC创建的MFC DLL,全部默认设置,然后就写了一个函数,
int _stdcall add(int a,int b)
{
return a+b;
}
然后到def文件去
EXPORTS
add
编译得到的dll文件,用delphi已经可以访问这个函数了,但是不知道怎么用VC去隐式调用它。
我已经拷贝了lib文件,然后加了#pragma comment(lib,"dll1.lib"),然后放个按钮,有这些代码来调用
int _stdcall add(int a,int b);
void Cdll_test_vc_1Dlg::OnBnClickedButton1()
{
CString str;
str.Format("%s",add(5,3));
MessageBox(str);
}
编译通过,但是运行后,点下按钮非法操作。
解决方案1: up
解决方案2: 呵呵,%s用错了
str.Format("%s",add(5,3));
改为str.Format("%d",add(5,3));
解决方案3: str.Format("%s",add(5,3));
既然add的返回值是int类型,那么用%s格式化是错误的。
应该是:str.Format("%d",add(5,3));
解决方案4: 是不是栈指针esp异常,如果是可以考虑是不是函数调用约定不匹配
以上介绍了“ dll隐式调用的一个问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3400893.html