赞
踩
- import console;
- //生成 DLL
- import tcc;
- var c = tcc();
- c.code = /**
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #ifdef __cplusplus
- #define EXTERN_C extern "C" __declspec(dllexport)
- #else
- #define EXTERN_C __declspec(dllexport)
- #endif
- #define _CDECL __cdecl
- #define _STDCALL __stdcall
- struct testStruct
- {
- int a;
- int b;
- float c;
- double d;
- long long f;
- short g;
- };
- EXTERN_C void _CDECL test_one(struct testStruct p)
- {
- printf("%d\n", p.a);
- printf("%d\n", p.b);
- printf("%f\n", p.c);
- printf("%lf\n", p.d);
- printf("%lld\n", p.f);
- printf("%d\n", p.g);
- }
- EXTERN_C void _CDECL test_two(int a ,int b,float c,double d,long long f,short g)
- {
- printf("%d\n", a);
- printf("%d\n", b);
- printf("%f\n", c);
- printf("%lf\n", d);
- printf("%lld\n", f);
- printf("%d\n", g);
- }
- EXTERN_C void _CDECL test_three(struct testStruct *p)
- {
- printf("%d\n", p->a);
- printf("%d\n", p->b);
- printf("%f\n", p->c);
- printf("%lf\n", p->d);
- printf("%lld\n", p->f);
- printf("%d\n", p->g);
- p->g = 65;
- }
- int main()
- {
- return 0;
- }
- **/
- c.output( "d:/bin.dll" ) //编译C源码,生成DLL
- c.close(); //收工
-
- console.open()
- var dll = raw.loadDll("d:/bin.dll",,"cdecl");
- console.log("第一种方式:")
- dll.test_one(100,200,raw.float(33.3),0,raw.double(99.2),raw.long(30000000),raw.word(97));
-
- console.log('\n第二种方式:')
- dll.test_two(100,200,raw.float(33.3),raw.double(99.2),raw.long(30000000),raw.word(97));
-
- console.log('\n第三种方式:')
- var testStruct = {
- int a=100;
- int b=200;
- float c=33.3;
- double d=99.2;
- long f=30000000;
- word g=97;
- };
- dll.test_three(testStruct);
-
- console.log('\n第三种方式运行后成员g的值被修改:')
- console.dump(testStruct)
-
- console.pause(true);


Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。