vs2010静态库 动态库

psutil 7.2.2 跨平台安装:Windows/Linux/macOS 3种环境配置与依赖冲突解决 本文详细介绍了psutil 7.2.2在Windows、Linux和macOS三大平台上的安装配置方法及依赖冲突解决方案。针对Python开发者常见的ModuleNotFoundError等问题,提供了从基础安装到企业级部署的完整指南,帮助开发者高效实现跨平台系统监控功能。 阅读详情
1.VS2010新建lib工程
File->new->Project->Win32 Application->application setting的时候选择static library,去掉Precompiled header

新建头文件static_lib.h

int add(int x, int y);
int add( int x, int y, int z);
int sub( int x, int y);

新建源文件static_lib.cpp

#include "static_lib.h"

int add(int x, int y)
{
return x + y;
}

int add(int x, int y, int z)
{
return x + y + z;
}

int sub(int x, int y)
{
return x - y;
}

Build->Build Solution.
没有问题的话会在static_lib\Release和static_lib\Debug目录下生成static_lib.lib文件。这就是静态库。

使用静态库:
新建工程Use_static_lib。把上一步的头文件static_lib.h以及生成的static_lib.lib文件拷贝到新建工程的目录下。
新建main.cpp

#include <iostream>
#include "static_lib.h"

#pragma comment (lib, "static_lib.lib")

using namespace std;

int main()
{
cout<<add(3, 4, 5)<<endl;
system( "pause");
return 0;
}

运行程序,成功输出12.

2.VS2010新建dll工程
与1中类似,到application setting的时候,选择DLL。
VS2010自动生成了几个文件。
dll_lib.h

#ifdef DLL_LIB_EXPORTS
#define DLL_LIB_API __declspec ( dllexport )
#else
#define DLL_LIB_API __declspec ( dllimport )
#endif

// This class is exported from the dll_lib.dll
class DLL_LIB_API Cdll_lib {
public :
Cdll_lib( void );
// TODO: add your methods here.
};

extern DLL_LIB_API int ndll_lib;

DLL_LIB_API int fndll_lib( void );

这里是一个类,一个变量和一个普通函数的申明。

dll_lib.cpp

#include "stdafx.h"
#include "dll_lib.h"


// This is an example of an exported variable
DLL_LIB_API int ndll_lib=0;

// This is an example of an exported function.
DLL_LIB_API int fndll_lib( void )
{
return 42;
}

// This is the constructor of a class that has been exported.
// see dll_lib.h for the class definition
Cdll_lib::Cdll_lib()
{
return ;
}

这里是头文件中申明的实现。

加上自己的函数:
在dll_lib.h头文件中加如下内容:

//my own functions
DLL_LIB_API int add( int x, int y);
DLL_LIB_API int sub( int x, int y);

在dll_lib.cpp源文件中写函数的实现:

//my own functions
DLL_LIB_API int add( int x, int y)
{
return x + y;
}

DLL_LIB_API int sub( int x, int y)
{
return x - y;
}

Build->Build Solution.
编译成功,会生成dll_lib.lib和dll_lib.dll两个文件。

使用动态库:
动态库的使用有两种方式:隐式调用和显式调用。
1.隐式调用
这种调用方法中需要.h文件,.lib文件和.dll文件。
新建工程,把dll_lib.h文件,dll_lib.lib文件和dll_lib.dll文件拷贝到工程目录下
新建main.cpp

#include <iostream>
#include "dll_lib.h"

using namespace std;

#pragma comment ( lib , "dll_lib.lib" ) //加??载?dll的??lib引?y导??

int main()
{
cout<<add(2, 4)<<endl;
system( "pause" );
return 0;
}

编译,连接,运行成功。如果去掉dll_lib.lib程序会编译失败,如果去掉dll_lib.dll程序运行失败,因为找不到函数的代码。

2.显示调用
这种调用方法只需要lib_dll.dll就行。
先定义函数指针,使用LoadLibrary()加载dll,使用GetProcAddress()获取函数的地址。然后就可以使用这个函数了。

但是这里有一个问题。涉及到C和C++对函数名的符号定义。

如果dll中是用C定义的int add(int, int)函数,可以这么用
typedef int (*func) (int, int); //函数指针

HINSTANCE hInstance = LoadLibrary("lib_dll.dll"); //加载dll
ASSERT(hInstatce != NULL);

func add = (func)GetProcAddress(hInstance, "add"); //寻找函数名为add的函数地址
一切都很好,没有问题。

那么如果是C++呢?
如果在dll中定义了两个函数
int add(int, int, int);
int add(int, int);
那么func add = (func)GetProcAddress(hInstance, "add"); //寻找函数名为add的函数地址
得到的是哪个函数的地址呢?
答案是得不到任何一个函数的地址。因为找不到函数符号为add的函数,所以得不到函数地址。这两个函数可能为_add_int_int和_add_int_int_int,要看dll中的函数名,可以使用dumpbin工具。

在dll中使用extern "C" 可以让编译器安装C语法进行编译。

使用C++编译的dll更详细的参考如下:
macOS Python包安装全攻略:从依赖冲突到编译错误的实战解决方案 在macOS环境下安装Python包时,开发者常面临依赖冲突和编译错误两大核心挑战。依赖冲突源于不同包对同一库的版本要求不兼容,而编译错误则多因缺失系统头文件或库文件导致。理解虚拟环境隔离原理和编译工具链配置是解决这些问题的关键。通过合理使用虚拟环境(如venv、conda)和系统包管理器(如Homebrew),可以有效管理依赖并配置编译环境,从而提升开发效率。本文以OpenClaw安装为例,详细解析了在macOS上处理依赖地狱和原生扩展编译问题的完整流程,涵盖了从环境准备到实战排错的各个环节,为开发者提供 阅读详情

相关推荐

BrewUI:给Homebrew套上图形化界面,让Mac软件包管理更直观

软件包管理是系统维护的基础技能,在macOS生态中,Homebrew作为事实标准的包管理器,长期依赖命令行交互。对于不熟悉终端的用户,复杂的命令和输出往往构成使用门槛。BrewUI作为一款图形化前端,将Homebrew的常用操作封装为可视化按钮,同时保留底层机制,提供依赖树、批量升级、清理缓存等功能。它降低了上手成本,也提升了高级用户的管理效率,适用于从新手到资深开发者的广泛人群。无论是初始化开发环境、日常批量升级,还是排查依赖冲突,BrewUI都能提供清晰的界面反馈和完整日志。本文基于实际体验,介绍Bre

weixin_33923762的博客 382

VS2010静态库、动态库

1.VS2010新建lib工程 File->new->Project->Win32 Application->application setting的时候选择static library,去掉Precompiled header 新建头文件static_lib.h int add(int x, int y); int add(int x, int y, int z); i

cx_colo的专栏 3679

OpenClaw AI框架多平台安装与部署指南

AI开发框架作为现代机器学习工程的基础设施,其环境配置直接影响模型训练与推理效率。OpenClaw作为新兴框架,通过Python生态实现跨平台支持,其核心原理基于动态计算图优化和硬件加速。在工程实践中,合理的环境配置能显著提升开发效率,特别是在多模型并行、生产部署等场景下。本文以OpenClaw为例,详解从Python虚拟环境搭建到Docker容器化部署的全流程,涵盖Windows/Linux/macOS三大平台的CUDA加速配置与常见问题解决方案,并特别针对M1芯片和大型语言模型部署提供优化建议。

优快云头条 801

VS2010动态库生成、使用

4、生成.dll,.lib。导出到其他应用程序中使用,调用相关接口函数。此为动态库的调用方式,.lib,.dll文件都需要有。配置类型->动态库(.dll),目标文件扩展名->.dll。1、新建一个VS2010空工程。3、添加.h头文件,.cpp文件。

haiqinzuo的专栏 988

Python 3.8安装指南:跨平台详细教程与常见问题解决

Python作为当前最流行的编程语言之一,其版本管理和环境配置是开发者必须掌握的基础技能。Python3相较于已停止维护的Python2具有更好的性能优化和语法特性,而3.8版本因其长期支持(LTS)特性成为企业生产环境的常见选择。安装过程中,PATH环境变量配置和多版本隔离是关键难点,Windows系统需特别注意勾选'Add Python to PATH'选项,macOS建议通过Homebrew管理,Linux则可利用包管理器高效安装。掌握正确的安装方法能避免后续开发中90%的环境问题,特别是使用pip管

weixin_30457465的博客 359

Python环境配置与pip安装全攻略:从新手到实战

Python作为广泛使用的编程语言,其包管理工具pip是开发环境配置的核心组件。pip的工作原理是通过Python包索引PyPI下载和安装第三方库,管理项目依赖关系。在工程实践中,合理使用pip能够显著提升开发效率,确保环境一致性。然而新手常遇到环境变量配置错误、网络超时、依赖冲突等问题,特别是在Windows、macOS和Linux不同操作系统下,环境配置存在差异。通过配置国内镜像源如清华源、阿里云等,可以解决下载速度问题;使用虚拟环境能够隔离项目依赖,避免版本冲突。本文基于Python环境管理和pip工

迷彩风情 532

VS2010 添加外源静态库

初次使用VS2010进行C/C++开发,需要引入外源库,操作方法如下: 1. 下载所需静态库,按照里面的安装说明进行安装或者complie 2. 新建项目,右键属性 2.1 C/C++ 常规 在附加包含目录中添加库的.h文件的文件夹地址 2.2 链接器 常规 附加库目录中添加相应的.lib文件的文件夹地址 2.3 链接器 输入 附加依赖项中添加.lib文件的名称,XXX.lib,用分号与

GluttonousZX的专栏 1194

Bioconductor包安装全攻略:从核心原理到多环境避坑实战

在R语言生态中,包管理是数据分析工作流的基础环节。CRAN作为通用R包仓库采用滚动更新机制,而Bioconductor则针对生物信息学领域采用了独特的“发行版”模型,每半年发布一个经过严格兼容性测试的稳定版本,确保超过2000个专业工具包能协同工作。这一设计解决了生物信息分析中多包依赖冲突的核心痛点,其价值在于为基因组学、高通量测序等复杂分析提供了稳定可复现的环境。在实际应用中,用户常因R版本不匹配、系统依赖缺失或权限问题导致安装失败。本文以BiocManager为核心工具,详解其在Windows、Linu

weixin_30824599的博客 490

VS2010下静态链接库和动态链接库的生成和使用

静态链接库VS动态链接库静态链接库与动态链接库都是共享代码的方式。静态链接库 包含:头文件 .h 、静态库 .lib .lib包含了实际执行代码、符号表等等。 .lib中的指令都全部被直接包含在最终生成的 EXE 文件中。 静态链接库中不能再包含其他的动态链接库或者静态库。 对函数库的链接是放在编译时期完成的。 程序在运行时与函数库没有瓜葛,移植方便。 浪费空间和资源。 动态链接库 包含:头文件 .

风之盔的博客 1万+

BrewUI体验:macOS下Homebrew图形化管理与依赖分析实战

在macOS开发环境中,包管理器是软件安装与依赖管理的基础工具,而Homebrew作为最主流的方案,长期依赖命令行操作。对于开发者而言,命令行的高效与学习曲线并存,尤其面对依赖关系复杂、批量升级难以精细控制时,认知负担更为明显。图形化界面通过将搜索、安装、依赖分析、服务管理等操作可视化,降低了使用门槛,同时保留了底层命令行的完整能力。BrewUI正是这一思路的典型实践,它基于Homebrew命令构建,让开发者能够直观查看软件包间的上游与下游依赖,评估升级影响,规避卸载风险。在实践场景中,无论是初始化索引、搜

weixin_33851604的博客 448

Python包安装全攻略:从pip到Conda,8种方法解决所有环境难题

Python包管理是开发中的基础环节,其核心在于依赖解析与环境隔离。通过虚拟环境(如venv)创建独立空间,结合pip工具从PyPI仓库安装、管理依赖,能有效解决版本冲突。在工程实践中,面对网络受限、离线部署或复杂二进制依赖等场景,需掌握更多方法:如使用国内镜像源加速下载,通过pip install -e进行本地开发调试,利用conda管理数据科学栈的非Python依赖,或从Git仓库直接安装开发版本。这些技术组合应用,能显著提升开发效率与项目可复现性,是构建稳定Python项目的关键。

weixin_30800807的博客 404

VS2010,C++ 制作静态库(*.lib),并使用

简单来说,就是建立两个项目: ① Win32 Project (Win32 项目): 接口文件.h 和 实现接口文件.cpp, 按F7编译后 生成静态库 *.lib ,lib可以理解成一个可以实现功能的包 ②Win32 Console Application(Win32控制台工程) : 使用 *.lib 库以及接口文件.h,用一个main函数调用,就可以实现跟之前有实现接口文件.cpp一样的...

jasscical's blog 1860

LabelImg 安装避坑与高效标注实战

本文详细介绍了LabelImg的安装避坑指南与高效标注实战技巧,涵盖Windows、macOS和Linux系统的常见问题解决方案,以及快捷键使用、批量处理和格式转换等实用技巧,帮助用户快速掌握图像标注工具LabelImg,提升标注效率。

weixin_34268579的博客 454

Python环境部署指南:从安装到虚拟环境配置

Python环境部署是开发者必备的基础技能,涉及解释器安装、包管理和开发环境配置三大核心组件。通过虚拟环境技术(如venv)可以实现项目依赖隔离,避免版本冲突问题,而pip作为Python生态中最常用的包管理工具,支持从PyPI安装超过30万个第三方库。合理的环境配置不仅能提升开发效率,还能确保项目在数据分析、Web开发等应用场景中的稳定性。本文详细介绍Windows/macOS/Linux多平台下的Python 3.x安装方法,并解析环境变量配置、pip高级用法等工程实践技巧。

weixin_30292843的博客 356

AI应用OpenClaw完全卸载指南:Windows/macOS/Linux深度清理教程

在软件开发和系统运维中,应用的安装与卸载是基础操作。传统卸载往往只移除主程序,导致配置文件、依赖库、注册表项等残留,可能引发端口占用、依赖冲突和环境变量污染等问题。从技术原理看,现代应用通过多种机制与操作系统集成,如Windows的注册表和服务、macOS的LaunchAgents和偏好设置、Linux的系统服务和环境变量,这些机制使得彻底清理变得复杂。其技术价值在于维护系统纯净性,确保后续软件安装和运行的稳定性,避免难以排查的隐性故障。在AI开发、本地大模型部署等场景中,应用常涉及Docker容器、大型模

weixin_33827590的博客 382

Linux 下 OpenCode 安装配置与使用指南:从环境准备到效率提升

在 Linux 终端中集成 AI 编程助手,正成为提升开发效率的常见实践。其核心原理是通过命令行工具读取项目上下文,调用大模型完成代码补全、报错解释与重构。这类工具的技术价值在于减少窗口切换、保持工作流连贯,尤其适合服务器运维与远程开发场景。OpenCode 作为终端 AI 编程助手,支持免费额度与多模型后端,但安装依赖、PATH 配置、locale 编码等环节常遇报错。本文围绕 Linux 环境下的 OpenCode 安装、初始化配置、常见问题排查及效率技巧展开,帮助开发者快速落地并规避典型坑点。

weixin_30861459的博客 328

Pandas实战排障指南:解决安装失败、数据读取异常与运行报错

Pandas是Python数据分析的核心库,但其实际落地常受困于环境配置冲突、数据编码混乱、类型推断错误等底层问题。理解其依赖Cython与NumPy的编译机制、基于DataFrame的内存模型及惰性加载特性,是保障稳定运行的技术基础。它不仅支撑CSV/Excel数据清洗、时间序列处理与分组聚合等典型任务,更在电商报表生成、用户行为分析、BI系统构建等工程场景中承担关键角色。本文聚焦真实开发中最频发的‘导入失败’‘读不出数据’‘loc报错’‘内存爆满’等现象,提供跨平台可复现的诊断路径与修复方案。

weixin_34391445的博客 602

Python环境搭建全攻略:从零安装到虚拟环境管理

Python作为一门解释型编程语言,其核心在于解释器与运行环境的搭建。理解环境配置原理是高效开发的基础,它确保了代码能在不同系统中正确执行。通过包管理工具pip,开发者可以便捷地安装和管理第三方库,极大提升了开发效率与项目可维护性。在数据分析、Web开发和自动化脚本等应用场景中,一个稳定、隔离的Python环境至关重要。本文聚焦于Python安装与环境搭建,详细解析了在Windows、macOS和Linux系统下的安装步骤、环境变量配置以及pip工具的使用,并重点介绍了虚拟环境(venv)的创建与管理,帮助

weixin_30786657的博客 375
上一篇: C++匿名名字空间
下一篇: rep stos 指令(Intel汇编)
eric_arrow
博客等级 码龄14年 65粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值