如何声明正规Dll导出函数,使该函数可同时被VC/VB/Delphi调用?

iProgram 2002-12-13 07:16:02
Hi大家好. 我想做这么一个Dll: 他导出一个函数,这个函数的输入参数是一个字符串,输出参数也是一个字符串,要求该函数能够被VB/VC/Delphi同时调用.且VC调用的时候是LoadLibrary调用.

1. 这个函数如何声明?
2. 如何用VB String类型变量给函数传参数,又如何得到返回值
3. 如何用Delphi String类型变量给函数传参数,又如何得到返回值

...全文
352 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iProgram 2002-12-14
  • 打赏
  • 举报
回复
有答案了,总结一下:
就是__stdcall的方式,前面加上extern "C",然后在def里导出就可以在VB下用了.VC报错是因为Loadlibrary用的函数地址声明时也要加上__stdcall,否则不一致汇报错,that so.
hanwg 2002-12-13
  • 打赏
  • 举报
回复
用LPCSTR类型
iProgram 2002-12-13
  • 打赏
  • 举报
回复
用 realdreamer(贫僧来了)的方法,无法用:LoadLibrary调用,找不到函数入口
用【^_^】的方法,VC时:
客户 Dll 结果
Debug Debug 正常
Debug Release 从Dll函数返回时报错
Release Release 从调用该Dll客户函数返回时报错. TNND.
zhenxizhou 2002-12-13
  • 打赏
  • 举报
回复
study
iProgram 2002-12-13
  • 打赏
  • 举报
回复
如何声明同时适合VB/C++/Delphi的返回String和String呢?
sucker 2002-12-13
  • 打赏
  • 举报
回复
sorry
应该是:
__dexlspec(dllexport) long __stdcall MyFunction(int x)
并且在def 文件中
EXPORTS
MyFunction

或者不用def
在DLL源码中写
# pragma comment(linker, "/export:MyFunction=_MyFunction@8")
realdreamer 2002-12-13
  • 打赏
  • 举报
回复
//example:


extern “C”_declspec(dllexport)
int PASCAL output_number(int x)
{ int y;
char msg[20];
y=x >>2;
sprintf(msg, “计算结果:%o ! ”, y);
::MessageBox(NULL, msg, “信息”, MB_OK);
return 0;
}
sucker 2002-12-13
  • 打赏
  • 举报
回复
应该是
extern "C" __dexlspec(dllexport) int MyFunction(int x)

16,472

社区成员

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

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

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