首页 > 编程语言 >C++项目链接C语言动态库

C++项目链接C语言动态库

时间:2024-12-31 10:18:38浏览次数:1  
标签:__ 项目 cplusplus C++ C语言 链接

 有C++项目B,有C语言动态链接库A,需要在B程序中链接A库。

 

我们知道C++运行环境可以直接运行C语言程序,但因为C++编译时对方法名的解析不同,所以要在C++项目中运行C语言程序,关键问题是需要告诉C++编译器,按照C语言的规范来编译指定的C代码。

上面所述的“指定的C代码”,包括C++项目中对应的函数声明,以及通过头文件引入的C语言动态库中的代码。

 

具体的步骤如下:

1. C语言项目的头文件中,需要导出的函数声明处,添加__declspec(dllexport)(如果是windows系统)和extern "C"。

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

	__declspec(dllexport) void test_c_method(int i);

#ifdef __cplusplus
}
#endif // __cplusplus

如果没有这一项处理,则会报"链接规范与前面的...不兼容"编译错误。

 

2. C++项目中,在需要使用C语言动态库的合适的地方添加C语言函数声明

extern "C" {
	void test_c_method(int i);
}

void classB::CPlusPlusMehod()
{
    test_c_method(1);
}

如果没有这一项处理,则会在编译时报链接错误。

 

如此,就可以正常的在C++项目中使用C语言动态库了。

标签:__,项目,cplusplus,C++,C语言,链接
From: https://www.cnblogs.com/loyoot/p/18643351

相关文章

  • 在 VC++ 里最大化并且前置窗口
    在VC++里最大化并且前置窗口在Windows系统中,如果需要通过编程的方式,前置显示另一个进程的某个窗口,你会发现,你遇到了一个麻烦。至少你会发现,仅仅使用SetForegroundWindow或SetWindowPos是没有效果的。下面是解决方案,在VC++2022、VC++2019,Window10和Wind......
  • 如何创建抖音卡片链接跳转微信?详细教程
    抖音私信卡片是抖音平台内一种特殊的分享和交互方式。它实际上是一种链接的展示形式,但比直接发送链接更安全,不会导致账号异常。卡片的内容可以自定义,因此更能吸引用户的点击。抖音私信卡片的主要功能包括:跳转微信:用户点击卡片后,系统会自动打开微信并显示指定的二维码,用户长......
  • 20. C++快速入门--并发基础
    参考:《Professionalc++》,《并发编程实战》1基本概念1.1竞争原子性"原子"(atomic)操作是指一种不可分割的操作,即在执行过程中不会被中断的操作。这种操作要么完全执行,要么完全不执行,不会出现部分执行的情况。应用场景计数器:在多线程环境下安全地递增或递减计数器。标......
  • CSU中南大学OJ平台2024级C语言期末复习
        临近期末,相信还有人因OJ平台没做出来而发愁。没事的孩子们,我给你们带来了法宝,解题思路和代码。奇偶数做风车七夕节消消乐水果店问题V:奇偶数(20分)题目描述小南在网上看到了一个关于奇偶数的定义:如果一个正整数n既能拆成两个奇数之和也能拆成两个......
  • C++引用
            目录1.引用的声明与初始化2.别名3.引用与指针的区别4.常量引用|const与引用5.引用作为函数参数6.引用返回值7.右值引用(C++11新特性)8.引用的实现        C++中的引用是一种特殊的类型,它是一个别名(或者叫作“引用名”),用来指向另一个变量。......
  • C语言中的右左法则
    C语言中的右左法则C语言中的右左法则是一种阅读复杂声明(如指针、数组、函数等)的方法,用于帮助理解变量或函数的类型。右左法则通过从标识符(变量名)开始,依次向右和向左查看修饰符来解析声明的含义。右左法则的基本规则从标识符(变量名)开始:找到变量名,作为解析的起点。优先处......
  • C语言:固定格式数组输出
    我想实现输入一个数组n(数组a的个数)然后输入数组a(用逗号分隔的输入),然后再输入m(数组b个数)再输入数组b1.输入inta[max],b[max];inti=0,j=0,n,m;//读取数组a的个数scanf("%d",&n);for(i=0;i<n;i++){if(scanf("%d,",&a......
  • C++:正整数A+B
    正整数A+B题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。输入格式:输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱......
  • 【C语言练习(19)—加强对指针练习】
    C语言练习(19)文章目录C语言练习(19)前言问题问题解析总结前言主要练习如何使用指针,进一步加深对指针使用。问题有n个数,将前面的m个数拿出来,放到最后面,剩余的数一次向前移动m个位置。问题解析创建一个数组,并求出这个数组的长度,把数组打印出来intarr[10]={0};......
  • 21. C++快速入门--协程 Coroutine 入门
    参考:https://www.cnblogs.com/blizzard8204/p/17563217.htmlhttps://www.bennyhuo.com/2022/03/09/cpp-coroutines-01-intro/本文不完整,更新中1基本概念什么是协程?C++20的协程是一个特殊函数,具有挂起和恢复的能力.(可以不一次性执行)协程可用于异步编程,提供......