c语言调用c静态库
Ⅰ c语言vs怎么使用自己做的静态库与动态库,本人小白,请求详解
1.静态链接库
打开VS2010,新建一个项目,选择win32项目,点击确定,选择静态库这个选项,预编译头文件可选可不选。
在这个空项目中,添加一个.h文件和一个.cpp文件。名字我们起为static.h和static.cpp
static.h文件:
[cpp]view plain
#ifndefLIB_H
#defineLIB_H
extern"C"intsum(inta,intb);
#endif
- static.cpp文件:
#include"static.h"
intsum(inta,intb)
{
returna+b;
}
- 编译这个项目之后,会在debug文件夹下生成static.lib文件,这个就是我们需要的静态链接库。
#include<stdio.h>
#include<stdlib.h>
#include"static.h"
#pragmacomment(lib,"static.lib")
intmain()
{
printf("%d ",sum(1,2));
system("pause");
return0;
}
- 编译运行可得结果:3
#ifndefDYNAMIC
#defineDYNAMIC
extern"C"__declspec(dllexport)intsum(inta,intb);
#endifDYNAMIC
#include"dynamic.h"
intsum(inta,intb)
{
returna+b;
}
- 编译这个项目,会在debug文件夹下生成dynamic.dll文件。
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include"dynamic.h"
intmain()
{
HINSTANCEhDll=NULL;
typedefint(*PSUM)(inta,intb);
PSUMpSum;
hDll=LoadLibrary(L"dynamic.dll");
pSum=(PSUM)GetProcAddress(hDll,"sum");
printf("%d ",pSum(1,2));
system("pause");
FreeLibrary(hDll);
return0;
}
- 编译运行结果为:3
[cpp]view plain
下面说明如何调用静态链接库。
首先需要新建一个空项目,起名为test。将之前static项目下的static.h和static.lib这个2个文件复制到test项目的目录下,并在工程中加入static.h文件。
新建一个test.cpp文件如下:
[cpp]view plain
#pragma comment(lib,"static.lib"),这一句是显式的导入静态链接库。除此之外,还有其他的方法,比如通过设置路径等等,这里不做介绍。
2.动态链接库
和创建静态链接库一样,需要创建一个空的win32项目,选择dll选项。创建dynamic.cpp和dynamic.h文件
dynamic.h文件:
[cpp]view plain
dynamic.cpp文件:
[cpp]view plain
下面介绍如何调用动态链接库,这里讲的是显式的调用。
在刚才的test项目下,把static.lib和static.h文件删除,把dynamic.h和dynamic.dll复制到该目录下,并在项目中添加dynamic.h文件,修改test.cpp文件为:
[cpp]view plain
特别提示:
1.extern "C"中的C是大写,不是小写
2.如果从VS2010中直接运行程序,lib和dll需要放到test项目的目录下;如果想双击项目test下的debug文件中的exe文件直接运行的话,需把lib和dll放入debug文件夹下。
Ⅱ 用C语言写的程序能调用C++写的静态库吗
能。只要协议匹配的静态库不管什么语言写的都能用。
Ⅲ c语言调用库函数用什么命令
您好,很高兴回答您的问题。
在c语言中,专门建立有一组需要经常使用、但是编写起来不太简单的函数,系统把这些功能载入到软件内容。普通用户所需要使用时,只需要按照规定输入正确的调用语句,即可打开并运行谢谢文件。打开的格式为#include<对应文件名>,如打开输入输出函数为#include<stdio. h>。
Ⅳ C语言调用静态库显示"不是内部或外部命令,也不是可运行的程序或批处理文件"
你通过VS调试运行程序的时候默认会去查找程序目录下面的Debug中的和项目同名的exe文件(你的情况是TEST.exe)。因为你编译失败了,exe文件没有生成所以找不到这个文件去执行。你目前的情况看来是你尝试用C的编译器去编译C++代码(因为你创建的是.c文件)所以失败。把文件名改成cpp重新编译再试
Ⅳ C语言 静态库之间可以相互调用么
可以的,天津lib和.h文件到项目,然后就可以调用。
但是必须有一个被动,一个主动,你不要搞成间接递归。
Ⅵ c语言如何 调用外部程序
调用外部程序接口
方法1.
Process p=Runtime.getRuntime.exec("cmd")(最常用)
方法2.
Process p=new ProcessBuilder(cmd).start()
但是一般方法一比较常用, 下面我们介绍下方法一中关于抽象Process类的常用函数
//向对应程序中输入数据
();
//获得对应程序的输出流(没写错)
();
//获得程序的错误提示
();
//等待程序执行完成,返回0正常,返回非0失败
abstractpublicintwaitFor()throwsInterruptedException;
//获得程序退出值,0正常退出,非0则异常
abstractpublicintexitValue();
//销毁进程
abstractpublicvoiddestroy();
其中前3个函数用的最多