|
发表于 2014-1-6 09:39:48
|
显示全部楼层
类型声明为pointer ,参数传入 com.Variant() 指针。
如果声明为struct,应传入结构体,结构体类型转换参考帮助手册: API数据类型。
示例:
- import vc6;
- var vc = vc6( "/",, import console )
-
- vc.cpp = /******
- #include <windows.h>
- #include <OaIdl.h>
-
- extern "C" __declspec(dllexport) double __cdecl TestVARIANT( VARIANT *v )
- {
- return v->dblVal;
- }
- ******/
- //编译生成DLL
- vc.exec(
- 'cl *.cpp'
- ,'/W3'
- ,'/MD'
- ,'/O2 /Ot /GL /EHsc'
- ,'/D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL"'
- ,'/I"./INCLUDE"'
- ,'kernel32.lib user32.lib'
- ,'/link /SUBSYSTEM:WINDOWS /MACHINE:X86'
- ,'/out:test.dll' ,'/dll'
- ,'/LIBPATH:".\LIB" /LIBPATH:".\LIB2"'
- )
- var dll = raw.loadDll("test.dll")
- TestVARIANT = dll.api("TestVARIANT","double(pointer b)" ,"cdecl")
- import com;
- import console
- console.printf( TestVARIANT(com.Variant( 123.5 ) ) )
复制代码 |
|