生成.dll时,如果只有.dll,没有.lib,如何解决?(生成.DLL提供方用的是dllexport,使用方用的是dllimport,用个宏来代替)

本文介绍了在Visual Studio中通过预处理器宏BUILDING_DLL来控制类成员函数的导出方式,以便于创建DLL文件。提供了两种不同的实现方案,并详细解释了如何在.h文件中定义这些宏以及在VS项目的预处理器定义中进行设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:http://blog.youkuaiyun.com/kesalin/article/details/1612998
步骤:TrueSingDetect.dll对应函数所在的.h文件中加上方案一中的#if BUILDING_DLL  。。。。#endif /* Not BUILDING_DLL */中的内容,并在vs属性C/C++   预处理器  预处理器定义  中添加BUILDING_DLL,然后编译,就可在release中看见.dll和.lib(编译的是什么版本就看什么版本)
情况一:如果函数定义的类型是类
TrueSingDetect.h
#if BUILDING_DLL
# define DLLIMPORT _declspec (dllexport)
#else
# define DLLIMPORT _declspec (dllimport)
#endif

class DLLIMPORT TureSingJudge{

}
TrueSingDetect.cpp
TureSingJudge::TureSingJudge(){
}
TureSingJudge::~TureSingJudge(){
}


方案一:
TrueSingDetect.h
#ifndef _TrueSingDetect_H_
#define _TrueSingDetect_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
DLLIMPORT int TrueSingDetect(void);
#endif

TrueSingDetect.cpp
#include "TrueSingDetect.h"
__declspec (dllexport) int TrueSingDetect(void){
int resulut=0;
return resulut;
}

方案二:
TrueSingDetect.h
#ifndef _TrueSingDetect_H_
#define _TrueSingDetect_H_
#define DllExport   __declspec( dllexport )
DllExport   int TrueSingDetect(void);
#endif

TrueSingDetect.cpp
#include "TrueSingDetect.h"
DllExport int TrueSingDetect(void){
int resulut=0;
return resulut;
}
<think>首先,用户的问题是关于获取 "onnx_cpp2py_export.dll" 文件,这是 ONNX 运行的依赖。用户提到参考了一些引用,但那些是关于 ONNX 转换错误的解决思路,不是直接关于下载 DLL 文件的。 用户的需求很明确:他们想下载 "onnx_cpp2py_export.dll" 文件。但根据我的知识,这个 DLL 文件是 ONNX Python 包的一部分,通常不是单独下载的。它是通过安装 ONNX 包自动包含的。 在引用中: - 引用[1] 讨论了 ONNX 转换错误,涉及节点拓扑排序问题。 - 引用[2] 提供了解决 ONNX 导出失败的方法,包括安装特定版本的包(如 onnx==1.15.0)来避免 DLL 加载错误。 用户的问题:"我想获取 onnx_cpp2py_export.dll 文件 请问下载 onnx_cpp2py_export.dll 文件 ONNX 运行依赖" 所以,我需要以结构化的方式回答这个问题,使用中文,并遵循系统级指令。 关键点: - 回答结构清晰,逐步解决问题。 - 尽量保证真实可靠。 - 使用中文。 - 在行内数学表达式中使用 $...$,独立公式使用 $$...$$(但这个问题可能不涉及数学,所以可能不需要)。 - 生成相关问题。 - 在引用的段落末尾自然地添加引用标识,如 [^1]。 步骤: 1. **理解问题**:用户想下载 "onnx_cpp2py_export.dll" 文件。但这不是一个单独分发的文件;它是 ONNX 包的一部分。 2. **提供解决方案**: - 解释这个 DLL 文件的来源:它通常是通过安装 ONNX Python 包生成的。 - 建议用户通过安装 ONNX 包来获取它,而不是单独下载。 - 参考引用[2],其中提到安装特定版本的 ONNX 可以解决类似问题。 3. **给出具体步骤**: - 使用 pip 安装 ONNX。 - 指定版本以避免冲突,如引用[2]中建议的 onnx==1.15.0。 - 安装后,DLL 文件应该位于 Python 环境的 site-packages 目录中。 4. **生成相关问题**:在回答结束,添加几个相关问题。 5. **引用处理**:在回答中,如果引用参考内容,添加引用标识。 结构化回答: - 引言:解释问题。 - 步骤:提供获取文件的步骤。 - 注意事项:提醒用户避免单独下载 DLL 的风险。 - 相关问题:生成 2-3 个相关问题。 相关问题想法: 1. 如何验证 ONNX 安装是否正确? 2. 常见 ONNX 运行错误有哪些? 3. 如何修复 DLL 加载失败错误? 确保回答真实可靠: - 基于 ONNX 文档和常见实践。 - 避免建议从不可靠来源下载 DLL 文件,因为可能有安全风险。 最终回答框架: 1. 解释 "onnx_cpp2py_export.dll" 的来源。 2. 建议通过安装 ONNX 包获取。 3. 提供安装命令。 4. 描述如何找到文件。 5. 添加相关问题。</think>### 获取 onnx_cpp2py_export.dll 文件的解决方案 "onnx_cpp2py_export.dll" 文件是 ONNX (Open Neural Network Exchange) 运行的一个关键依赖项,主要用于 Python 接口的底层 C++ 实现。它不是独立的可下载文件,而是通过安装 ONNX Python 包自动生成的。直接下载 DLL 文件可能带来安全风险(如恶意软件注入)或版本兼容性问题,因此推荐通过官方渠道安装 ONNX 包来获取。以下是详细步骤: #### 步骤 1: 安装 ONNX Python 包 这个 DLL 文件是 ONNX 包的一部分,安装后会包含在 Python 环境的 site-packages 目录中。为避免版本冲突(如引用[2]中提到的 DLL 加载失败问题),建议使用特定版本: ```bash # 使用 pip 安装 ONNX 及其依赖(推荐使用清华镜像源加速) pip install onnx==1.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install protobuf==5.27.3 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install onnxconverter-common==1.13.0 -i https://pypi.tuna.tsinghua.edu.cn/simple ``` - **为什么选择这些版本?** 引用[2]显示,onnx==1.15.0 与 protobuf==5.27.3 的组合能解决类似 "DLL load failed" 错误,确保运行兼容性[^2]。 - 安装后,Python 会自动生成 "onnx_cpp2py_export.dll" 文件。 #### 步骤 2: 定位 DLL 文件 安装完成后,文件通常位于 Python 的 site-packages 目录: - **Windows 示例路径**:`C:\Users\<用户名>\AppData\Local\Programs\Python\Python39\Lib\site-packages\onnx` - **Linux/macOS 示例路径**:`/usr/local/lib/python3.9/site-packages/onnx` - **验证方法**: - 在 Python 中运行以下代码检查 ONNX 安装: ```python import onnx print(onnx.__file__) # 这会输出 ONNX 包的路径,DLL 文件在此目录下 ``` - 如果输出无错误,说明 DLL 已正确加载。 #### 注意事项 - **避免单独下载**:从第三方网站下载 DLL 文件可能导致安全漏洞或模型转换失败(如引用[1]中的节点拓扑错误)。始终优先使用包管理器安装[^1]。 - **环境兼容性**:确保 Python 版本与 ONNX 兼容(推荐 Python 3.7+)。如果问题持续,尝试创建虚拟环境: ```bash python -m venv onnx_env source onnx_env/bin/activate # Windows 使用 onnx_env\Scripts\activate pip install onnx==1.15.0 ``` - **引用说明**:以上步骤基于 ONNX 官方文档和常见问题解决实践[^1][^2]。 如果以上方法无效,可能是系统路径问题。请提供更多错误日志,我会进一步协助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值