2016-08-18 122 views
0

好吧,所以:我必须在vb中创建一个.exe文件。这个.exe必须调用一个vb dll,并且该vb dll必须调用一个本机C dll(仍然在那个:()上工作。如何从vb6调用本机C DLL

真正的问题是:我有这个C dll,我试图这个问题是:每次我尝试调用它时,它都会给出“错误53:找不到文件”,但是!如果我指向另一个DLL在同一个文件中位置(更简单的一个,无需外接任何包括和狗屎),它的工作原理。

为什么呢?我必须包括一些在VB其他项目除了DLL itsels?

@ EDIT1

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

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

我现在可以正常调用一个DLL,事情是这样的:我创建了一个调用C中的DLL的VB6 EXE 我必须调用的C中的函数名为“FindPIN”。函数FindPIN用CreateFile打开一个COM端口,意思是:

(IN VB6)调用FindPIN - >(在C DLL中)FindPIN调用CreateFile并保存该端口的句柄 - >返回一个代码(如< 0错误,内容十分重要)

当我打电话FindPIN,它的工作原理,但它总是返回-1功能:。

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

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

,但如果我尝试运行C exe文件,如:

(IN C.exe)呼叫FindPIN - >(在C DLL)FindPIN调用的CreateFile,并从该端口节省了手柄 - >返回代码(如< 0错误,内容十分重要)。

它工作得很好,和COM口打开!:(

有什么我在VB6做除了功能的黎民声明?我正常这样做,就像

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

:(请帮助我!

+0

我建议,编写C或csharp的一个简单的例子,以确保该dll运行良好。 – neohope

+0

首先尝试'声明自动函数FindPIN Lib“pin.dll”()作为整数' – neohope

+0

这是行不通的。在win98兼容模式下运行你的c.exe。 – neohope

回答

0

请发布您的dll的FindPin函数的c声明。 我想你的功能不会返回short,但它返回int,这是真的吗?

然后,你必须声明在VB中函数的返回值“如龙”不是“作为整数”,因为

Integer = short = Int16Long = int = Int32