用g++编译动态链接库

使用g++编译器进行dll动态链接库的创建及调用 首先,我们需要一个C++源文件来创建DLL。假设我们的DLL将提供一个简单的函数。其中,-shared指生成动态链接库,-o指生成的.dll文件名,后接源文件。其中,-L后接dll文件所在路径,-l后接自定义.dll动态链接库名。,该函数接受两个整数并返回它们的和。如:新建dllmain.cpp。便可得到mylib.dll的动态链接库,为后续调用。在终端看到如下说明,即表示调用成功。 阅读详情

  写了一个最简单的动态链接库程序,使用g++命令行编译。怕以后忘记,就把它记到blog中。

动态库导出头文件:
/**
  * file: dll.h
  * Powered by JGood 2009-09-22
  */

#ifndef __dll_h__
#define __dll_h__

#ifdef __MY_DLL_LIB__
    #define DLL_EXPORT extern "C" __declspec(dllexport)
#else
    #define DLL_EXPORT extern "C" __declspec(dllimport)
#endif

DLL_EXPORT int jmax(int x, int y);

#endif
 
动态库实现:
编译成obj文件:g++ -c -o dll.obj dll.cpp
链接obj,生成dll: g++ -shared -o dll.so dll.obj
/**
  * file: dll.cpp
  * Powered by JGood 2009-09-22
  */

#define __MY_DLL_LIB__
#include "dll.h"

int jmax(int x, int y)
{
    return x > y ? x : y;
}
 
调用动态库:
直接编译成exe: g++ main.cpp dll.so -o main.exe
/**
  * file: main.cpp
  * Powered by JGood 2009-09-22
  */

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

using namespace std;

int main()
{
    int a = 20;
    int b = 40;
    
    cout << jmax(a, b) << endl;

    return 0;
}  
g++生成和使用c++动态/静态链接库教程 c++库分为动态库与静态库,它们的区别是 阅读详情

相关推荐

mingw-w64编译器

gcc7.2 mingw w64 编译器 非常好用,支持C++17 替换devCPP的mingw后,修改编译参数为-std=C++1z即可使用

gcc/g++静态与动态链接库

文章目录库文件静态链接库动态链接库库的生成与使用静态库动态库参考文章 库文件 首先说明要对库有一个比较直观的理解。库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都依赖很多基础的底层库,不可能每个人的代码都从零开始,公共代码需要反复使用,就把这些代码编译成为“库”文件,因此库的存在意义非同寻常。 本质上说来库是一种可执行代码的二进制形式(注,其本身不可执行),可以被操作系统载入内存执行。 我们在链接的时候有两种库:动态链接库和静态链接库 静态链接库 在链接阶段,会将汇编生成的目标文件.o与引用到的

Charles Ren's Tech Blog 8764

【 史上最全】测绘、遥感RS、地信GIS国家级比赛竞赛整理

目录Esri Esri

weixin_43910227的博客 9150

g++编译生成动态链接库

1.查看是否有opencv库 $pkg-config --cflags --libs opencv 2.g++编译opencvs $g++ test.cpp -o test pkg-config --cflags --libs opencv(注意引号是上斜,左上角波浪线) 若遇到未定义main()函数的问题,就执行如下: $g++ test.cpp -o test pkg-config --cfl...

weixin_40367126的博客 1563

【2025最新】Multisim 14.3超详细安装步骤 【附安装包+永久+汉化】|Multisim 14.3

嗨,小伙伴们!是不是一直在找可靠的multisim下载安装教程?今天就给大家带来超详细的2025年Multisim 14.3安装全攻略!这款电路仿真神器绝对是学电子、做电路设计的必备工具!很多朋友后台留言说安装时各种报错、汉化失败,所以我决定出一期零基础、保姆级的教程,从下载到安装再到汉化,全部一步到位搞定!按照我的步骤来,包你顺利安装不出错!!!通过本教程,相信大家已经成功安装并配置好了Multisim 14.3。这款电路仿真神器能帮你设计和测试各种电路,从简单的LED闪烁到复杂的信号处理电路都不在话下。

pythonpapaxia的博客 8万+

hcaptcha-challenger:基于本地AI模型自动破解验证码的工程实践

验证码作为区分人类与机器的经典安全机制,其核心原理是通过图像识别、行为分析等交互式挑战来阻挡自动化程序。传统绕过方法依赖第三方打码平台或脚本,存在成本高、稳定性差的问题。随着多模态大语言模型和计算机视觉技术的发展,本地化AI求解成为新的技术方向,它通过集成YOLO、ResNet等模型,在本地完成图像语义理解,实现了高隐私、低成本、可进化的验证码自动化解决方案。这种范式尤其适用于需要大规模稳定处理网页交互的场景,如电商数据采集和社交媒体管理。hcaptcha-challenger项目正是这一理念的工程实践,它

weixin_42587866的博客 1025

g++链接动态库和静态库问题

在用g++编译链接C++程序时,当我们其中有包含第三方库的时候,需要我们手动的指定我们需要的库文件。库文件有两种,一种为动态库,一种为静态库,具体的区别很简单,通俗的讲,动态库是在运行时动态加载,静态库是在链接的时候直接把库文件复制到程序中,运行的时候不再依赖库文件。 例如我们在程序中用到libtiff库和libxml2库: 1.动态库的链接 g++ *.cpp -o main -I./kufil...

liufangping的博客 1823

MoveIt2 Servo实战:解锁UR机械臂在ROS2中的实时遥操作与动态响应

本文深入探讨了MoveIt2 Servo在UR机械臂实时遥操作中的应用,展示了如何通过ROS2实现毫秒级动态响应。文章详细解析了Servo的核心价值、环境配置、控制器适配及高级调优技巧,特别适用于需要高精度控制的工业场景,如VR手术训练和汽车装配线。

weixin_29044157的博客 247

Linux g++编译动态链接库以及C++OpenCV工程调用

g++编译动态链接库编译简单的动态链接库代码与文件格式编译与调用1、生成动态链接库2、编译调用生成的动态库3、添加环境变量路径4、运行编译依赖第三方库(opencv)的动态链接库代码与文件格式编译与调用 编译简单的动态链接库 代码与文件格式 在文件夹R003下存在文件 –R003 ----R003.h ----R003.cpp ----main.cpp 1、头文件:R003.h #ifndef R...

qq_19655645的博客 2785

深度学习与西储大学轴承数据集(一)

西储大学数据集介绍

weixin_50642818的博客 1万+

详解大端模式和小端模式

详解大端模式和小端模式 一、大端模式和小端模式的起源         关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令

ce123的技术博客 19万+

g++ 编译动态链接库

g++ 编译动态链接库 在linux中动态链接库的后缀为(.so),windows中的后缀为(.dll)mac 中为(.dylib) g++ -shared -fPIC -o ecd.so add.c -share指为共享的,-fPIC表示position independent code位置无关,这是动态库特性 -o 指定生成的动态链接库的文件名 -I ./compact_enc_de...

lixia755324的博客 1853

03. 线性规划与混合整数规划 (LP/MIP)

本文介绍了OR-Tools中的线性规划(LP)和混合整数规划(MIP)求解器。主要内容包括:1) LP/MIP的基本概念和数学形式,对比了LP、MIP、ILP和BIP的区别;2) OR-Tools支持的求解器类型,如GLOP、SCIP等,以及它们各自的特点和适用场景;3) 详细展示了如何使用GLOP求解器进行线性规划求解,包括变量定义、约束添加和目标函数设置;4) 介绍了SCIP求解器的配置和使用方法;5) 讨论了变量类型、约束类型、多目标优化等进阶功能。文章通过Java代码示例演示了如何实现一个完整的优化

智慧是做事用的 156

g++编译动态链接库

编译.so文件 g++ say.cpp -o libsay.so -shared 连接静态库 g++ TestRun.cpp -o TestRun -L. -lsay 注意得时libsay.so得写成-lsay 即libfoo.so得写成-lfoo

ashqal的专栏 2399

小梅哥Xilinx ZYNQ学习笔记2——38译码器

译码器(Decoder)是一种多输入多输出的组合逻辑电路,负责将二进制代码翻译为特定的对象(如逻辑电平等),功能与编码器相反。译码器一般分为通用译码器和数字显示译码器两大类。本设计的是通用译码器。三八译码器,即是 3 种输入状态翻译成 8 种输出状态。1.case开始开始,endcase结束;2.数字声明时,合法的基数格式有 4 中,包括:十进制('d 或 'D),十六进制('h 或 'H),二进制('b 或 'B),八进制('o 或 'O)。数值可指明位宽,也可不指明位宽。

m0_51430584的博客 1636

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

g++ 编译动态链接库和静态链接库

现在我有hello1.cpp和hello2.cpp两个文件,现在我要生成动态链接库libhello.so和静态链接库libhello.a。以下为步骤: 1.生成动态链接库: g++ -m32 hello1.cpp hello2.cpp -fPIC -shared -o ../lib/linux32/libhello.so -m32为生成32位的动态链接库,-m64位生成64位的动态链接库

cherish_2012的专栏 5000

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Task-in-Prompt攻击:任务语义劫持如何绕过安全对齐

大模型安全对齐旨在让模型拒绝有害请求,但Task-in-Prompt这类新型提示词注入攻击却通过将恶意指令伪装成任务定义或数据字段,直接劫持模型的“任务语义”,使对齐机制在意图解析阶段即被绕过。与依赖敏感词触发的传统越狱不同,这类攻击表面文本完全无害,却能在强模型上获得更高成功率,暴露出静态内容过滤器的结构性盲区。其威胁已扩散至RAG系统、多Agent协作和文档处理等将外部输入拼接进提示词的应用场景。本文从攻击原理出发,拆解注入任务说明、角色内嵌、输入结构操纵三类典型手法,并给出基于任务意图图谱、对抗训练与

weixin_34348174的博客 381

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

g++ 编译mysql动态库_g++ 编译动态链接库和静态链接库

现在我有hello1.cpp和hello2.cpp两个文件,现在我要生成动态链接库libhello.so和静态链接库libhello.a。以下为步骤:1.生成动态链接库: g++ -m32 hello1.cpp hello2.cpp -fPIC -shared -o ../lib/linux32/libhello.so -m32为生成32位的动态链接库,-m64位生成64位的动态链接库。2.生成静...

weixin_33293858的博客 432

g++编译动态链接库*.so调用另一个*.so的方法

g++编译动态链接库*.so调用另一个*.so的方法 1.  编译文件内容 包括四个文件,分别是:DemoTest.h、one.cpp、two.cpp。 DemoTest.h #ifndef __DEMO_TEST_HEADER__  #define __DEMO_TEST_HEADER__  #include   using namespace std;  void

Maybe_Lee的博客 1万+

[转]用g++编译动态链接库

  写了一个最简单的动态链接库程序,使用g++命令行编译。怕以后忘记,就把它记到blog中。动态库导出头文件:/** * file: dll.h * Powered by JGood 2009-09-22 */ #ifndef __dll_h__#define __dll_h__ #ifdef __MY_DLL_LIB__ #define DLL_EXPORT extern "...

weixin_30954265的博客 152

g++编译过程和动态链接库

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34080903的博客 740

Bug记录,g++编译的动态链接库和gcc编译的动态链接库不能够混用

Bug记录,g++编译的动态链接库和gcc编译的动态链接库不能够混用

weixin_42554470的博客 264

香橙派3B学习笔记9:Linux基础gcc/g++编译__C/C++中动态链接库(.so)的编译与使用

这里学习补习一下C/C++中静态链接库(.a)、动态链接库(.so)的编译与使用ssh : orangepi@本地ip密码 : orangepi发行版: 基于 Ubuntu 20.04.6 LTS(Focal Fossa)的定制版本,专门为 Orange Pi 设备优化。

NULL指向我的博客 1373

关于g++编译器针对动态链接库与主程序存在同名变量问题的处理方式的质疑

我们会发现,ood 在库文件里面被定义,为double 在程序main里面被定义为float ,不但可以并行,还能共用同一段内存。在linux平台下,使用g++编译器编写一个动态链接库。发现编译器对于库文件和主程序中的同名变量处理有不合理的地方。笔者认为,为了防止混淆,在主程序编译阶段,编译器应该要么报同名错误,要么干脆将两个ood变量隔离使用。编译完成后,生成一个libr6.so 放置到/usr/lib 下面。这样将两个变量放在一个内存里,视其为同一个变量,是不科学的。编译通过,没有报错也没有报警。

Tom13a的博客 398

Linux下g++编译c++程序过程说明

Linux下g++编译c++程序过程说明

qq_30150579的博客 1609
上一篇: Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
下一篇: Python模块学习 ---- zlib 数据压缩
JGood
博客等级 码龄20年 498粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值