C语言创建并使用lib

本文试图以比较简洁的方式创建lib:

只求能够把lib用起来,并不会加上【很多但必须的东西,比如我们之前说过的#ifndef #define 和#endif】

打开vs

创建一个新的项目:

点击确定

然后添加 -> 新建项

这个名称很关键: main.c

Main.c的内容:

int myMultiple(int a, int b){
    return a*b;
}

/*

这是因为如果使用,main.cpp的话,这个文件就会以cpp的形式编译,这样的话,还要有另外的语法extern格式来限定。所以我们在创建的时候倒不如直接写main.c。这样省一步事儿。

C语言可以操作很多东西,很多人用它来写操作系统,这是因为 C语言可以直接操作硬件,对于很多上层语言来说,他们理论上不具有 这样的能力,或者即使有,也很复杂,写起来很麻烦,所以 C语言在一定程度上用来专门书写这种静态库文件lib和 动态库文件dll。

所以这里想说的是就写main.c 就可以啦!!!

非要写main.cpp的话,要这样包一层:

    extern "C" //在C++语言当中,extern "C"告诉编译器,用C语言的方式编译这个函数
    {
      int myMultiple(int a, int b){
          return a*b;
      }
    }

*/

然后去 项目->属性->配置属性->配饰类型   修改成 静态库(.lib.)

然后新建一个项目showLib_Use,来使用这个 lib。

添加-> 新建项

这个时候 注意 先用main.c 创建

然后生成

Main.c 的内容:

#include <stdio.h>
#pragma comment(lib,"showLib.lib")
int myMultiple(int, int);
int main(){
    printf("lifei\n");
    printf("%d", myMultiple(2, 3));
    getchar();
    return 0;
}

在此之前需要先把 showLib.lib放到静态时候要在编译时候使用它的文件目录下面。

看了我的几个例程发现我都只是用.c文件实现了 lib的加载 然后 用 .cpp 文件和.c实现了 dll的加载。

//苦恼中。。。求高玩帮忙解答下

时间: 2024-11-13 00:27:27

C语言创建并使用lib的相关文章

C语言创建删不掉的文件夹

上一篇博客写了一个杀不死的进程,现在再写一个删不掉的文件夹(文件同理),所谓删不掉不是真的删不掉而是删掉后马上重新创建.代码如下: #include <stdio.h> #include <windows.h> #include <io.h> //For access() #define _CRT_SECURE_NO_WARNINGS //消除编译器警告,如fopen不安全 //判断文件或文件目录是否存在 bool checkFileExist(const char *

使用 Go 语言创建 WebSocket 服务

感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18504.html 今天介绍如何用 Go 语言创建 WebSocket 服务,文章的前两部分简要介绍了 WebSocket 协议以及用 Go 标准库如何创建 WebSocket 服务.第三部分实践环节我们使用了 gorilla/websocket 库帮助我们快速构建 WebSocket 服务,它帮封装了使用 Go 标准库实现 WebSocket 服务相关的基础逻辑,让我们能从繁琐的底层代码中解脱出来,

C语言创建Json的使用法则

参考原文:http://blog.csdn.net/xukai871105/article/details/33013455 JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式.它基于JavaScript的一个子集.JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯.这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. cJSON结构体: typedefstruct cJSON { structcJSO

go语言创建新进程过程详解 (os.StartProcess源码分析)

关于如何使用go语言实现新进程的创建和进程间通信,我在网上找了不少的资料,但是始终未能发现让自己满意的答案,因此我打算自己来分析这部分源代码,然后善加利用,并且分享给大家,期望大家能从中获得启发. 首先我们来看一段代码 proc, _ := os.StartProcess(name, args, attr) if err != nil { fmt.Println(err) } _, err = proc.Wait() if err != nil { fmt.Println(err) } 我们来看

数据库实验T-SQL语言创建实例图

实验: 用T-SQL语句建立数据库及其对象 一.实验目的 1.掌握用SSMS或Transact-SQL创建.查看.修改.删除数据库的方法: 2.掌握数据库的备份和恢复方法: 3.掌握数据库的分离和附加方法: 4.掌握用SSMS或Transact-SQL语句创建.修改.删除表及向其添加数据的方法. 二.实验要求 1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作: 2.能认真独立完成实训内容: 3.实验后做好实验总结,根据实验情况完成总结报告. 三

C语言创建循环缓冲区(环形缓冲区)-- Circular Buffer(Ring Buffer)

由于嵌入式系统的资源有限性,循环缓冲区数据结构体(Circular Buffer Data Structures)被大量的使用. 循环缓冲区(也称为环形缓冲区)是固定大小的缓冲区,工作原理就像内存是连续的且可循环的一样.在生成和使用内存时,不需将原来的数据全部重新清理掉,只要调整head/tail 指针即可.当添加数据时,head 指针前进.当使用数据时,tail 指针向前移动.当到达缓冲区的尾部时,指针又回到缓冲区的起始位置. 目录: 为什么使用循环缓冲区 C 实例 使用封装 API设计 确认

单链表的插入伪算法和用C语言创建单链表,并遍历

非循环单链表插入结点伪算法讲解 q插入p之后的伪算法:第一种表示方法:r = p->pNext; // p->pNext表示的是所指向结点的指针域,指针域又是指向下一个结点的地址p->pNext = q; // q保存了那一块结点的地址.q是一个指针变量,存放那个结点的地址.q->pNext = r; 第二种表示方法:q->pNext = p->pNext; // q的指针域指向p后面一个结点p->pNext = q; // p的指针域指向q 删除非循环单链表结点

C语言创建一个数组,利用函数调用实现数组的初始化,逆置和清零

★创建一个数组,实现函数init初始化数组.empty清空数组.reverse函数完成数组元素的逆置. #include<stdio.h> #include<stdlib.h> #include<string.h> void menu() { printf("****************************************\n"); printf("***************1.初始化数组*************\n&

R语言创建空向量、矩阵

x=vector() #创建的为空向量(可以为数值或者字符串) > x[1]=1> x[2]=1> x[1] 1 1 x<-numeirc(0)     #长度可变的存储数字的向量 x=character() #创建出来的为字符串向量 > x[1]=1 > x[2]=3 > x [1] "1"  "3" x<-NULL; x[1]<-2;---- #每次给x赋值长度自动延长 生成的也为向量 vector(mode