博客
关于我
使用vs2019将libtorch打包为dll(环境:win10+vs2019+libtorch-cuda10.1)
阅读量:594 次
发布时间:2019-03-11

本文共 1328 字,大约阅读时间需要 4 分钟。

在 Windows 环境中,使用 VS2019 将 libtorch 打包为 DLL 的具体步骤如下:

一、创建项目

首先,在 VS2019 中创建一个新的项目,选择“空项目”或“动态库项目”,确保开发环境正确配置,建议使用 x64 自选,以支持更好的性能。

二、设置编译器和环境

  • 在项目的属性中,确保工具的版本符合要求,建议使用`${env}``中的最新版本 собира该项目。
  • 在调试器设置中,使用 x64 作为默认平台,这样可以避免因目标平台不匹配导致的性能问题。
  • 三、代码和文件配置

    1. 不使用预编译头文件

    安全提示:请注意,为了规范编译环境,建议删除或注释掉 ${env}中的预编译头文件(如pch.hpch.cpp`),编译时使用标准的头文件处理方式。

    2. 新建头文件和源文件

    创建一个新建头文件 TestDLL.h,在其中添加以下代码:

    #pragma once#include 
    extern "C" __declspec(dllexport) void MyTest();

    这里,extern "C" 使得编译器将模块视为 C 语言接口,__declspec(dllexport) 告诉编译器该函数需要被导出到 DLL 中供其他程序调用。

    创建一个新的源文件 TestDLL.cpp,在其中添加以下内容:

    #include "TestDLL.h"#include 
    void MyTest() { torch::Tensor tensor = torch::rand({5, 3}); std::cout << tensor << std::endl;}

    注意:这是一个简单的示例,围绕实际项目需求进行扩展。

    四、编译项目

  • 确保所有必要的库和头文件路径已被添加到项目属性中。
  • 在 VS2019 中使用合适的编译选项,编译 TestDLL.cpp,如果是动态库,可选是否添加调试辅助步骤。
  • 编译完成后,生成的 DLL 可以通过项目的输出文件夹找到。
  • 五、创建调用 DLL 的控制台程序

  • 创建一个新的控制台项目,在项目属性中选择 Console 提升。
  • TestDLL.h 和编译出的 TestDLL.lib/TestDLL.dll 作为依赖添加到新项目中。
  • main.cpp 文件中添加以下代码:
  • #include "TestDLL.h"int main() {    MyTest();    return 0;}

    注意:记得将需要使用 extern "C" 调用的函数前添加相应声明,确保编译环境支持 DLL 调用。

    六、执行操作

  • 在控制台程序项目中,右键点击 main.cpp 文件,启动 Properties 边栏,添加必要的就绪阶段和库文件导入项。
  • 如果遇到符号错误,例如 MyTest 未被找到,需在项目属性中手动添加相关的导入路径或依赖项目。
  • 完成以上步骤后,编译代码并运行,确保 DLL 函数能够正常工作。如果遇到问题,请回到项目属性检查编译环境设置是否正确。

    注:在此过程中,excludingис扶墙走必要的验证步骤是重要的,确保编译和调试环境的正确配置。

    转载地址:http://cwctz.baihongyu.com/

    你可能感兴趣的文章
    MySQLIntegrityConstraintViolationException异常处理
    查看>>
    mysqlreport分析工具详解
    查看>>
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>
    MySQL_西安11月销售昨日未上架的产品_20161212
    查看>>
    Mysql——深入浅出InnoDB底层原理
    查看>>
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>
    MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
    查看>>
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
    查看>>
    MySQL不同字符集及排序规则详解:业务场景下的最佳选
    查看>>