请问,我用VC做了个DLL,可用VB调用的时候总是报错,报DLL调用约定错误?为什么?

zhsr 2000-06-05 09:02:00
...全文
221 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
stingw 2000-06-07
  • 打赏
  • 举报
回复
太简单了!
这都是microsoft的错!!
#if defined(__cplusplus)
extern "C" {
#endif

__declspec(dllexport) int YourFuncation( int dev );

#if defined(__cplusplus)
}
#endif
Firing_Sky 2000-06-06
  • 打赏
  • 举报
回复
输出函数要用stdcall声明
Un1 2000-06-06
  • 打赏
  • 举报
回复
把你的C 和 VB 的声明贴上来!

另To puzzle:
你那个问题我认为声明:
Declare Function ReadMessage Lib "test4.dll" (ByVal strRecv
As String) As Boolean
就可以搞定!

因为VB如果把String ByVal 调API的话,将是使用字符串地址的值压入堆栈,正好和LPSTR对齐!
puzzle 2000-06-06
  • 打赏
  • 举报
回复
抱歉!错字!
左边“系统功能”栏,选择热点问题top20
“待解决的问题”改为“已解决的问题”
我当时提问的问题名为“既懂VB又懂VC的高手请进”
祝好运!
summer 2000-06-06
  • 打赏
  • 举报
回复
大哥,你的DLL有没有做输出?如果在NT上,就在函数声明中加上_del??(dllexport)
中间两个字母不记得了,自己查查看;如果是在98上,只好麻烦你做个DEF文件了!
Leex2000 2000-06-06
  • 打赏
  • 举报
回复
要编写给 VB 调用的 DLL 需要注意以下的问题:
1. 在 vc 提供的函数前面要加上 WINAPI 的定义, 例如:
int WINAPI myfunction(...)
2. 如果希望在 VB 中传递一个字符串给 DLL, 例如:
Dim buffer As String
myfunction(buffer)
定义需要声明为:
Declare Function myfunction Lib "mydll.dll" (ByVal buffer As Any) As Integer
注意传递的不是 ByRef
在 C/C++ 中定义为 int myfunction(char* buffer)
zhsr 2000-06-05
  • 打赏
  • 举报
回复
特点问题top20在那?
是热点问题吗?那里没有puzzle的帖子??
puzzle 2000-06-05
  • 打赏
  • 举报
回复
哈!老弟!很同情你!几天前我和你遇到类似的问题。
去特点问题top20看一下署名puzzle提问的帖子,或许能
给你省一点分。
^ and ^同病相怜

16,471

社区成员

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

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

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