易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

火山视窗开发你最想知道的秘密 线程池 C++互通 64位内联汇编   [复制链接]

    2022-03-05 10:26:49
    火山PC源码
    易语言资源网
    5182 次浏览
    来源链接
授人以鱼不如授人以渔

一,如何调用C++开发文档?
二,火山变量到和C++变量如何转换?
三,如何做到32位与64位通用?变整数,c++中又用什么表示?
四,什么是嵌入式方法,如何使用嵌入式方法。
五,重磅,64位如何写内联汇编?
六, 什么是结构体,如何取结构体指针?结构体中的文本型如何表示?
七,线程中如何用模板做为参数传参。
八,线程中,整数型、文本型、结构体,如何作为参数传入?



一,如何调用C++开发文档?


先记住这几个。其他参考官方文档。


1.1,@begin @end 嵌入C++代码 。


1.2,@sn<current_class>:所处类名。


1.3,<include></include>:声明头。


1.4,引入外部c++文件,(图1-1)




1.5,将c++方法前置内联声明。(图1-2)







二,火山变量到和C++变量如何转换?


2.1,火山到C内部,C内部到火山变量如何互交。例子如下:


2.11,火山整数->c++:int,@  int i=(int)@<火山整数>,需不需要强制转视情况而定。


2.12,c++:int ->火山整数,@  @<火山整数>=(@dt<整数>)i。


三,如何做到32位与64位通用?变整数,c++中又用什么表示?


下面只对整数型进行说明,其他类型参考整数型转换。
        
3.1,火山中:把整数类型全部改为变整数。传入C++。


3.2,C++中:用long long。


例如:
        @  long long i=(long long)@<火山变整数>;
        @  @<火山变整数>=(@dt<变整数>)i;


3.3,添加预处理代码。让编译器32位、64位分别走对应的路。


#ifdef _WIN32
#ifdef _WIN64
//64位代码放在这里
#endif
//32位代码放在这里
#endif


(图2-1)







四,什么是嵌入式方法,如何使用嵌入式方法直接调用C++写的类方法。


嵌入式方法可以理解为对函数的引用。


4.1,定义类变量。(图4-1)





4.2,取类变量,然后就可以直接调用c++写的类方法。(图4-2)







五,重磅,64位如何写内联汇编?


这个应该算是大部分人改写其他语言到火山碰到的棘手问题吧。


5.1,新建在c++工程新建ASM文件(新建文件,改后缀为.asm)。开始写内联汇编代码。.code开始,end结束。(图5-1)





5.2,右键asm文档,配置属性-常规-项类型为:自定义生成工具。(图5-2)(图5-3)


     



5.3,配置属性-自定义生成工具,配置编译:命令行,asm:ml64 /Fo $(IntDir)%(fileName).obj /c %(fileName).asm;输出:$(IntDir)%(fileName).obj;%(Outputs)(图5-4)





5.4,右键ASM文件。选择(ctrl+F7)编译。这样我们就等到了obj二进制目标文件。


5.5,打开VS控制台或VS工具菜单里面的程序包管理器控制台。cd切换到obj目录下,lib (fileName).obj,生成静态支持库lib。(图5-5)




5.6,c文档中引入调用汇编方法。(图5-6)





六, 什么是结构体,如何取结构体指针?结构体中的文本型如何表示?


6.1,新建类,定义为结构体,类属性:@视窗.结构类。


6.2,通过GetStruct取得类指针。


(图6-1)





七,线程中如何用模板做为参数传参。


7.1,线程传参2种方式,一种是嵌入C代码取指针:@ @<task>=(@dt<变整数>)@<多整数线程>;另一种可以用模板作为传参参数。(图7-1)






八,线程中,整数型、文本型、结构体,如何作为参数传入?


8.1,提供线程池使用实例源码供大家参考。源码在下面下载。(图8-1)





点我下载 (已有 104 次下载)

[错误报告]   上一篇:火山HP二次封装HTTP服务端...     下一篇:Sunny网络中间件火山PC模块...