好的,所以:我必须在vb中创建一个.exe。这个.exe必须调用一个vb dll,而vb dll必须调用一个原生的C dll(仍在处理:()。
真正的问题是:我有这个C dll,我试图从.exe调用,所以我可以学习如何继续前进。问题是:每当我尝试调用它时,它都会给我"错误53:找不到文件"。但!如果我指向同一位置的另一个DLL(一个更简单的DLL,没有任何外部包含和狗屎)它可以工作。
为什么呢?除了dll itsels之外,我还必须在VB项目中包含其他内容吗?
@ EDIT1
我已经在C中创建了一个调用该DLL的测试程序,它运行得很好。
我设法做了一些改变,现在我有另一个问题,这是更重要的方式。 :(
我现在可以正常调用DLL。问题是:我创建了一个在C中调用DLL的VB6 exe。 C中我必须调用的函数名为" FindPIN"。也就是说,函数FindPIN用CreateFile打开一个COM端口。意思是:
(IN VB6)调用FindPIN - > (在C DLL中)FindPIN调用CreateFile并从该端口保存Handle - >返回一个代码(例如< 0表示错误,yada yada)。
当我调用FindPIN时,它可以工作,但它总是返回-1。功能:
hSerialComm = Createfile (...);
if (hSerialComm == INVALID_HANDLE_VALUE)
return -1;
这意味着它无法打开COM端口! :(
但是如果我尝试运行C exe,比如:
(IN C.exe)调用FindPIN - > (在C DLL中)FindPIN调用CreateFile并从该端口保存Handle - >返回一个代码(例如< 0表示错误,yada yada)。
它工作正常,COM端口打开! :(
除了函数的commom声明之外,VB6中还有什么必须做的吗?我正常地这样做,比如
Private Declare Function FindPIN Lib "pin.dll" () As Integer
:(拜托,帮助我!!
答案 0 :(得分:0)
请发布您的dll FindPin
函数的c声明。
我猜你的函数不会返回short
但它返回int
,是真的吗?
然后你必须在VB" As Long"中声明函数的返回值。不是"作为整数"因为
Integer = short = Int16
和Long = int = Int32