繁体   English   中英

如何从vb6调用本机C DLL

[英]How to call a native C DLL from vb6

好的,所以:我必须在vb中创建一个.exe。 该.exe必须调用vb dll,而该vb dll必须调用本地C dll(仍在:()上工作。

真正的问题是:我有一个C dll,正在尝试从.exe调用它,以便我可以了解它如何继续运行。 问题是:每次我尝试调用它时,都会出现“错误53:找不到文件”。 但! 如果我指向同一位置的另一个DLL(一个更简单的DLL,没有任何外部包含和扩展名),它将起作用。

为什么? 除了dll本身,我还必须在VB项目中包含其他内容吗?

@ Edit1

我已经用C创建了一个调用该DLL的测试程序,并且工作正常。

我设法进行了一些更改,现在我有另一个问题,这很重要。 :(

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

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

当我调用FindPIN时,它可以工作,但始终返回-1。 功能:

hSerialComm = Createfile (...);
if (hSerialComm == INVALID_HANDLE_VALUE)
  return -1;

这意味着它无法打开COM端口! :(

但是,如果我尝试运行C exe,例如:

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

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

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

Private Declare Function FindPIN Lib "pin.dll" () As Integer

:( 请帮我!!

请发布您的dll的FindPin函数的C声明。 我猜你的函数不会返回short而是返回int ,是真的吗?

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

Integer = short = Int16Long = int = Int32

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM