首页 > 编程语言 >【win编程】- 在C/C++中调用obj文件

【win编程】- 在C/C++中调用obj文件

时间:2022-12-31 16:45:23浏览次数:33  
标签:文件 obj win C++ 编译 源码 使用

问题思考: 有没有一种方式,让别人用你源码实现的功能,只给你声明,不给你源码?

程序编译过程:预编译 - 编译 - 链接, 编译生成obj文件,最后链接生成可执行文件。

那么就可以把源码的obj文件给别人,让使用者链接使用

 

实验验证:

生成obj文件

先创建四个文件

 

编译之后,难么这个连个obj文件就可以给别人使用了;

 

使用UseObj文件

创建工程使用UseObj,把obj的头文件放进来,编译肯定是报链接错误

 

obj文件使用方式1:

把obj文件直接拖进项目,参加编译就可通过;

 

obj文件使用方式2:

文件放到相应的路径下,然后链接选项里加入这个

 

问题:

这两个obj文件可以给C使用嘛? 怎么样才可以既能给C使用,也能给C++使用?

名称粉碎规则不同,不能使用

c语言中使用Obj文件

创建一个C语言项目,同样需要把四个文件拖进来,把后缀的cpp修改为C,编译结果提示这个文件名有误,找不到文件名

 

名称粉碎规则要向前兼容,使用C的粉碎规则,C++中同样适用

在obj项目中中重新生成obj文件

 

C项目中头文件和obj文件更新后报错;

extern “C”是C++中使用的,是为了C++兼容C使用的,在C项目中无法使用;

那么在C项目中使用要去掉,在C++项目中使用要加上;

 

重新生成obj文件,对生成的函数名称规则做一个限制,使用内置宏来判断

C++中加上兼容C的 extern "C"

C 中去掉 extern "C"

 

最后在C/C++中使用

成功在C中使用

成功在C++中使用

 

这种方式实现了让别人使用功能,但是不给源码;

每个CPP都有一个obj,非常麻烦;

为了解决这种麻烦,就有了静态库技术,静态库把所有的obj文件合成一个文件;

标签:文件,obj,win,C++,编译,源码,使用
From: https://www.cnblogs.com/awmking/p/17016907.html

相关文章

  • net6 api 以服务的形式运行window
    1.workerservice项目  1.需要安装nuget Microsoft.Extensions.Hosting.WindowsServicesIHosthost=Host.CreateDefaultBuilder(args).UseWindowsService(......
  • es5中Object.defineProperty修改对象原来的属性或定义新的属性
    1.之前修改对象属性的方法varobj={name:"张三",age:12,weight:"60kg"}//1.之前修改......
  • object原型-闭包“漏洞”
    如何在不修改下面代码的情况下,修改objvaro=(function(){varobj={a:'a1',b:'b1'};return{get:function(key)......
  • C++图书收藏模拟系统[2022-12-31]
    C++图书收藏模拟系统[2022-12-31]课题名称:图书收藏模拟系统的设计与实现课题简介目前有一些著名的网上图书购买系统,比如当当网、亚马逊等,他们都有收藏和购买图书的功......
  • C/C++杂志订阅管理系统[2022-12-31]
    C/C++杂志订阅管理系统[2022-12-31]题目26“杂志订阅管理系统设计”1、问题描述使用计算机对杂志进行管理,该杂志最多拥有订阅用户不超过50人,每个订户的信息包括:编......
  • C++银行账户管理仿真软件[2022-12-31]
    C++银行账户管理仿真软件[2022-12-31]3.4银行账户管理仿真软件设计一个银行账户管理软件,可以实现:用户登录,账户管理,存取款等功能,要求通过读写文件来读取数据和保存数......
  • C/C++学生管理系统(单链表)[2022-12-31]
    C/C++学生管理系统(单链表)[2022-12-31]利用数据结构的单链表的框架实现学生管理系统以下功能要求:1)学生个人信息:姓名、学号、专业、性别、年龄、联系方式、成绩。2)学......
  • C/C++学生成绩管理系统[2022-12-31]
    C/C++学生成绩管理系统[2022-12-31]课题三:学生成绩管理系统设计学生成绩信息包括:学期,学号,班级,姓名,四门课程成绩(语文、数学、英语和计算机)等。主要功能:(1)系统以菜......
  • C/C++公司销售管理流程模拟系统[2022-12-31]
    C/C++公司销售管理流程模拟系统[2022-12-31]公司销售管理流程模拟。【背景描述】请采用合适的数据表示方式模拟公司的销售管理流程。【数据分析】本系统的目标是模拟设......
  • C/C++猜数字游戏[2022-12-31]
    C/C++猜数字游戏[2022-12-31](***)猜数字游戏一、问题猫述:该游戏可以由程序随机产生或由用户输人四个0到9之间的数字,且不重复玩游戏者通过游戏提示输入八次来匹配上......