VS动态库的跨平台编译调用

简述:VS动态库的跨平台调用是说例如我们在vs2019编译的动态库,在vs2013或者vs2017等其他版本编译调用。

1.动态库编译:

参考如下作者的博客:

如何设计C++接口类 - 简书基于C++语言开发的库,需要提供给第三方来调用,就必然会涉及到如何设计接口类。一般来说,有两种方法设计接口类,第一种是PIMP方法,即Pointer to Implement...https://www.jianshu.com/p/2f870b7a34342.其他平台的测试

1)VS中设置参数:

设置动态库的".h"路径

VS动态库的跨平台编译调用

设置lib路径:

VS动态库的跨平台编译调用

VS动态库的跨平台编译调用2)将编译好的“.dll”放在与编译后的.exe相同路径下:

VS动态库的跨平台编译调用

3)vs2019编译的库,在vs2019中进行测试编译时会看到调用的.dll库

VS动态库的跨平台编译调用

简单直接暴力的方法是直接将涉及的所有.dll放在“2)”步骤中相同的位置;

但是实际:vs2019编译时使用的是:vcruntime140.dll, vcruntime140_1.dll, vcruntime140_app.dll, vcruntime140_1_app.dll,在vs2017和win10平台上面测试时可以编译调用。

4)将编译过程中的复制到txt文中,使用代码直接保存涉及到的.dll到其他文件夹下

VS动态库的跨平台编译调用

 python:文件转存代码

import os
import re
import shutil

path=r'C:\Users\OUR\Desktop\dd.txt'
destination_path=r'C:\Users\OUR\Desktop\destination'

if not os.path.exists(destination_file):
        os.makedirs(destination_file)
with open(path,'r',encoding='utf-8') as f:
        result=f.readlines()

for each in result:
        each=(each.strip())
        if "已加载" in each:
                each_result=re.findall(r"已加载.*?”",each)
                start_index=each_result[0].index('“')
                end_index=each_result[0].index('”')
                dll_path=each_result[0][start_index+1:end_index]
                print(dll_path)
                print(type(dll_path))
                shutil.copy2(dll_path,destination_path)

上一篇:解读《新一代人工智能发展规划》,企业如何才能迎来产业高潮


下一篇:vs2019+qt 打包程序