lomo1316 发表于 2014-1-9 15:16:03

DLLCALL传人参数char*(指针型参数)探讨求助

本帖最后由 lomo1316 于 2014-1-9 15:31 编辑

调用的DLL库函数原型:

#define C_DLLEXPORT extern "C" __declspec(dllexport)

C_DLLEXPORT HANDLE Open (char* comPort);

Vc++的调用方式:
        HANDLE hcom=NULL;

        char comport="COM1";
        hcom= Open(comport);
现在的调用方式:

Local $sFileName = @ScriptDir & '\SerialComDll.dll'
Local $hDllFile = DllOpen($sFileName)
Global $gComPortArray
$stBuffer = DllStructCreate("ptr pfname;wchar fname")
DllStructSetData($stBuffer, 2, "COM1")

$ptrBuffer = DllStructGetPtr($stBuffer, 2)
dllStructSetData($stBuffer, 1, $ptrBuffer)
$result = DllCall($sFileName , "ptr:cdecl", 5, "str*", DllStructGetPtr($stBuffer,2))

现在的情况是,函数返回值不对,应该是参数没正确传入,该如何调用呢?
各位大虾,Please Help Me!

netegg 发表于 2014-1-28 15:01:44

带*的参数未必是指针,像你问的char*参数,印象里指的是字节数量不固定

Ycxw2008 发表于 2014-2-10 21:47:22

本帖最后由 Ycxw2008 于 2014-2-17 07:05 编辑

指针你就传ptr

haopp1 发表于 2014-2-11 14:53:39

这我不懂。。。替你顶一下。。。
页: [1]
查看完整版本: DLLCALL传人参数char*(指针型参数)探讨求助