C++ 创建动态库及两种方法调用动态库

C#调用C函数的方法  C#调用C函数的方法: 方法一: 1.新建Visual C++类型的Win32项目C语言的函数定义如下:extern "C" __declspec(dllexport) int fnTestWin32(void);实现如下extern "C" __declspec(dllexport) int fnTestWin32(void){ return 42;}工 阅读详情

创建动态库

测试环境为VS2019 , 创建一个空项目,在项目上右键,进入属性,常规,配置类型改为动态库DLL
在这里插入图片描述

…h文件
// MyLibrary.h
#pragma once

#ifdef MYLIBRARY_EXPORTS
#define MYLIBRARY_API __declspec(dllexport)
#else
#define MYLIBRARY_API __declspec(dllimport)
#endif

extern "C" MYLIBRARY_API int add(int p_ia , int p_ib);
// 字符串处理函数
extern "C" MYLIBRARY_API void reverse_string(char* str);
.cpp文件
#include<iostream>
#include"add.h"

using namespace std;

int add(int p_ia, int p_ib)
{
	return p_ia + p_ib;
}

// 字符串处理函数
void reverse_string(char* str) 
{
    int len = 0;
    while (str[len] != '\0') len++;

    for (int i = 0; i < len / 2; i++) {
        char temp = str[i];
        str[i] = str[len - i - 1];
        str[len - i - 1] = temp;
    }
}

到此动态库创建完成

调用动态库

1、采用pragma comment(lib,“***.lib”)方式

1、将头文件,.dll .lib 拷贝到当前文件夹下,其他什么依赖项,库目录都不需要配置,这种方法简单直接


#include<iostream>
#include"../Project1/add.h"
#pragma comment(lib , "Project1.lib")
using namespace std;

int main()
{
	int ret = add(100,2090);
	cout << ret << endl;
	cout << "1111111" << endl;

	char s[] = "123456";
	reverse_string(s);
	cout << s << endl;
	return 0;
}


在这里插入图片描述

1、不用pragma comment

1、库目录添加,动态库的路径
在这里插入图片描述
2、链接器,输入,添加动态库的.lib文件
在这里插入图片描述
在这里插入图片描述


#include<iostream>
#include"../Project1/add.h"
//#pragma comment(lib , "Project1.lib")
using namespace std;

int main()
{
	int ret = add(100,2090);
	cout << ret << endl;
	cout << "1111111" << endl;

	char s[] = "123456";
	reverse_string(s);
	cout << s << endl;
	return 0;
}


如何实现C++动态调用动态链接库(DLL或SO) 使用函数指针来定义函数的类型,以便在动态库中找到的函数能够正确地调用。函数指针的类型必须与函数的签名(参数类型和返回类型)匹配。// 函数指针#ifdef _MSC_VER // Windows环境下的导出声明__declspec。 阅读详情

相关推荐

C++学习记录006——调用DLL(动态)

C++ 动态调用动态链接库

SYW的博客 4028

c/c++中如何实现动态库动态加载(含完整工程示例代码)

本文将win、linux加载、卸载动态库,并从动态库链接模块中获取类实例或函数地址等封装成统一的API接口,并集成在dllLoad.h/dllLoad.cpp中实现。构建一个注册类RegisterM,内置一个map容器,用来装载加载的动态库模块,并统一提供模块索引、及从模块中实现类实例获取、删除、函数地址获取等功能。 在动态库实现方面,提供一个虚拟元类MetaObject,然后在库的cpp文件中建立子类继承该类,实现其具体功能,并在cpp文件中直接提供函数API

技术需要分享 1万+

WPF与C++ 动态库交互

实现WPF与C++动态库的交互

让每一个想学习编程的人,都能学会,都能看懂,看了都有收获! 1315

c++——动态库加载函数的总结

动态库加载函数的总结。

www_dong的博客 2212

一个简单的C++调用动态库的实例的代码

如下内容是关于一个简单的C++调用动态库的实例的内容,希望对码农有些用。 extern __declspec(dllexport) int FuncTest(); dlltest.cpp __declspec(dllexport) int FuncTest(int a ) { if (a = 1) { return 100; } } dlltest.def LIBRARY “testmydll” EXPORTS FuncTest 编译后生成dlltest.dlldlltest.lib再新建一个Win32控制

weixin_44383954的博客 390

Lua调用c++函数的两种办法

之后编译

m0_60352504的博客 542

C/C++程序编译与链接(四) 创建动态库

其实站在开发者的角度,认为API与ABI是应该等价的,代码里的接口匹配,难道编译后,二进制文件中的接口对应的符号还不匹配吗?是的,对C++来说是要需要关注这些问题。

mo4776的博客 2147

AutoSAR实战:手把手教你配置PNC(Partial Network Cluster)实现精准休眠与唤醒

本文详细介绍了如何在AutoSAR中配置PNC(Partial Network Cluster)实现精准休眠与唤醒,通过DaVinci Configurator工具逐步指导,结合ComM模块的协同调试,优化车载电子系统的能耗管理。文章包含实战步骤、常见错误排查及功耗优化数据,适合汽车电子开发工程师参考。

weixin_33725239的博客 466

visual studio 创建 C/C++静态库和动态库

一、静态库 创建动态库 创建项目:文件 → 新建 → 项目 → visual c++ → win32程序(项目命名为staticlib) → 下一步→ 静态库(其他默认即可) → 完成 创建一个容纳函数的cpp :点击项目staticlib → 右键 → 添加 → 新建项 → visual c++ → c++文件(文件命名为source.cpp) 在source.cpp文件中键入: //其...

Robin的思路汇聚屋 2422

2025反爬虫革命:京东商品接口的动态指纹认证与量子加密传输方案

在2025年,全球电商API接口面临的安全威胁呈现指数级增长:京东构建了基于硬件、软件、行为三重维度的设备指纹模型:京东构建了基于BB84+E91混合协议的量子密钥中继网络:

FB13713612741的博客 1648

MIT 6.824分布式 LAB4A:ShardCtrler

lab 4要求实现一个使用raft共识算法的分片存储系统。而在lab 4a中,我们仅需实现分片控制器的功能。lab4中的分片存储系统有多个分片,这些数据分布在众多分片上,而每个分片都对应着一个集群组,可能一个集群组负责多个分片,一个集群组内的所有服务器都会使用raft共识算法进行状态的复制。而本实验的重点为分片控制器,主要负责的工作是对集群组和分片之间关系的管理,我们仅需在/src/shardctrler文件夹中对client.go,server.go,common.go这三个文件进行修改即可。注意事项(实

MarksSa的博客 831

C++静态库与动态库

学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择

littlezls的博客 296

如何使用windows搭建一个公网ftp/sftp服务器

在有公网ip的情况下,使用windows系统搭建一个ftp/sftp服务器会带来很多的方便,可以实现远程移动端的一键式访问,对于文件的备份、多设备的共享都十分的方便。然而网上许多的教程都是基于windows自带的iis搭建一个局域网ftp服务器,然而在搭建好后,我想要通过端口映射的方式实现在外网访问时,却发现连接不上的问题,感觉可能是因为windows家庭版的原因导致的。因此在查阅很多资料之后终于找到了一个公网ftp/sftp服务器的搭建方式,实测可用。这里把流程记录一下,做一个备忘录,也方便大家搭建。

weixin_43354138的博客 1万+

C#调用C/C++DLL的两种方法

C#引用C/C++DLL的两种方法前言方法1:常用的DLLImport方法方法2:CLR封装法 前言 工作中,需要给客户提供公司产品的.NET动态库,但驱动工程师往往只提供C编译的库,这里就需要我做一些中间工作,方便客户使用我们的产品。 方法1:常用的DLLImport方法 一般这种方法用于调用非托管动态库,很常见,这里我就不做赘述,推荐一个好用的网站方便大家做参考, 链接: pinvoke.ne...

lxandcs的博客 2320

kettle连接达梦资源库数据库插件

kettle自定义插件plugin database plugin 达梦插件 dm插件

weixin_42122126的博客 2169

HyperLynx(十五)多板仿真

在对话框的“Design file#1”下拉列表中选择“B00,Mainboard”,在其下方的“Reference designators”列表中选择元器件“J1”,然后在“Designfile#2”下拉列表中选择“BO1、RAM1”,在其下方的“Refer ence designators”列表中选择元器件“J1”,单击“Insert”按钮,为这两个元器件建立互连映射。在“Assign Models”对话框中,选择“B00 Motherboard”,将“U16.B12”设置为输出。

小幽余生不加糖 5060

c++怎么调用java_Java 和 C++之间互相调用

如何在Java和C++之间进行互相调用呢?应用场景没有什么好说到了,Java调用底层SDK,SDK代码基本都是C或者C++编写,以及后期的物联网技术,很多都是和底层硬件相关系的,底层硬件相关系的编程,自然要用到C或者C++,上层的androidp平台都是用Java编写的,这个之间如何进行互动,就非常重要了。这里提供两个思路,jni和jna,据说jna这个框架,实在底层的jni技术之上进行的一个封装...

weixin_39998795的博客 1036

基于coze studio开源框架二次定制开发教程

CozeStudio是一站式AIAgent开发工具,支持大模型接入、智能体编排、工作流开发等功能。采用Golang+React技术栈,基于微服务架构设计。项目包含后端API、领域逻辑、前端应用等模块,支持自定义任务流节点开发。开发流程涵盖前后端节点定义、实现逻辑编写等步骤,提供完整的开发规范和参考文档。相比商业版,开源版本在功能上有所精简,但仍保留核心开发能力。

coding change your life 790

C#调用C++程序方法

方法一:标准动态库调用 先使用C++代码生成动态库dll; 然后在C#中使用下列方式调用: using System.Runtime.InteropServices; [DllImport("xxx.dll", CallingConvention = CallingConvention.Cdecl)] extern static int FunName(int a, int b); ...

gubaofu的博客 2648

【LIN总线测试】——LIN主节点数据链路层测试

LIN总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,而这正是CAN总线的带宽和功能所不要求的部分。本章节主要介绍LIN主节点数据链路层如何测试?

测试领域技术分享 2612

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

将自己写的经常复用的类封装成动态库的方法

C++的开发不像c#那么给力,基本上引用下就可以了,它的步骤比较繁琐。 第一步:制作动态库      利用VC新建工程时选择win32 dynamic-Link Library(空的工程),然后添加头文件和cpp文件。假设你要封装的类的名成是TransferFunction,添加头文件 TransferFunction.h和TransferFunction.cpp到工程中。并

diligentcat的专栏 2515

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

学习笔记: linux下静态库与动态库的生成与调用

首先,这里有2个概念:静态库,动态库. 静态库:       是程序在链接时将静态库拷贝到可执行文件里,即生成可执行文件后,即使删除静态库,可执行文件仍可正常执行。 动态库:       也叫共享库,程序只是在链接时在可执行文件时保存了该库的信息,可执行文件执行时候需要到LD_LIBRAY_PATH或者/etc/ld.so.config里指定的路径去寻找该库并加载调用,因此如果删除该库,

nicebooks的专栏 1989

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

动态库(非MFC动态库)

一、C语言动态库   1、创建C语言动态库,并封装函数:     1)创建新工程:Win32 Dynamic-Link Library            2)添加SourceFiles文件:Cdll.c              Cdll.c中的内容:       //创建C的动态库 //_declspec(dllexport)声明导出 _declspec(dllex...

weixin_30904593的博客 183

C++编译动态库第三方库及使用

昨日不可追,今日尤可为.勤奋,炽诚,不忘初心 C++编译动态库第三方库及使用 为什么很多人,尤其各大厂商只给我们库文件让我们调用,而不直接提供源代码呢?这样的好处是1.把代码封装成各个模块以便复用。 2.省去各种底层调用,省去了大量的代码复制,更符合面向对象编程理念。3.解决了各种同名冲突的问题。4.最重要的,数据无价,隐匿了具体...

迷雾森林的专栏 1万+

库文件(动态库和静态库)

1.库文件

YoYuanZhizheng的博客 2568

c++动态库和静态库

本文属转载,但是写的非常好。 原文地址:http://www.cnblogs.com/skynet/p/3372855.html C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库

jasenin的专栏 592
上一篇: python垃圾回收机制
下一篇: python线程常见问题
越甲八千
博客等级 码龄11年 2954粉丝 553原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值