首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从vb6调用本机call

如何从vb6调用本机call
EN

Stack Overflow用户
提问于 2016-08-18 19:03:44
回答 1查看 414关注 0票数 0

好的,所以:我必须在vb中创建一个.exe。这个.exe必须调用一个still,而那个still必须调用一个本机call (还在工作:( )。

真正的问题是:我有这个C动态链接库,我试图从.exe调用它,这样我就可以了解它是如何工作的。问题是:每次我尝试调用它时,它都会给我“错误53:找不到文件”。但!如果我指向同一位置的另一个DLL (一个更简单的DLL,没有任何外部包含和垃圾),它就可以工作。

为什么?除了dll itsels之外,我还需要在VB项目中包含其他内容吗?

@Edit1

我已经用C语言创建了一个调用该DLL的测试程序,它工作得很好。

我设法做了一些改变,现在我有另一个问题,这是更重要的。:(

我现在可以正常调用DLL了。问题是:我创建了一个用C语言调用VB6的DLL exe,我必须用C语言调用的函数名为"FindPIN“。也就是说,函数FindPIN使用CreateFile打开了一个COM端口。理想是:

(在VB6中)调用FindPIN -> (在C DLL中) FindPIN调用CreateFile并保存来自该端口的句柄->返回代码(如<0表示错误,yada yada)。

当我调用FindPIN时,它可以工作,但它总是返回-1。函数:

代码语言:javascript
复制
hSerialComm = Createfile (...);
if (hSerialComm == INVALID_HANDLE_VALUE)
  return -1;

这意味着它不能打开COM端口!:(

但是如果我尝试运行一个C exe,比如:

(在C.exe中)调用FindPIN -> (在C DLL中) FindPIN调用CreateFile并保存来自该端口的句柄->返回代码(如<0表示错误,yada yada)。

它工作正常,并且COM端口打开了!:(

除了函数的常见声明之外,我还需要在VB6中做些什么吗?我做的很正常,就像

代码语言:javascript
复制
Private Declare Function FindPIN Lib "pin.dll" () As Integer

:(请帮帮我!!

EN

回答 1

Stack Overflow用户

发布于 2017-06-22 02:52:02

请张贴您的dll的FindPin函数的c声明。我猜你的函数没有返回short,但是它返回了int,是真的吗?

然后你必须在VB中声明函数的返回值为“Long”而不是“Integer”,因为

Integer = short = Int16Long = int = Int32

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39016567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档