C/C++
giveaname
这个作者很懒,什么都没留下…
展开
-
libcurl库的一个简单用例
遇到一个新需求,需要在c/c++中发起http请求。不想用socket组装报文,经别人提议决定用curl库,由此踩入一个大坑= = 首先,我们需要一个libcurl库 可以先去官网下载curl项目,解压后进入基础目录的projects文件夹执行generate.bat脚本,就会在该目录中生成windows目录。根据vs版本选择对应目录打开项目即可。此处我选了vc14。进入项目后,有多个编译版本可选。因为我只需一个demo库,选了最简单的LIB Release进行编译,生成的...原创 2020-07-17 10:20:28 · 1550 阅读 · 0 评论 -
多个c/c++动态库函数同名冲突解决方法
最近某个程序需要调用多个动态库,但是不同的动态库中使用了功能不同的同名函数,导致调用出现偏差,为此做了些面向搜索引擎的编程工作(俗名百度google一下)。。。样例假设有动态库libFuncA.so和libFuncB.so,他们的内部实现分别为:/*func_A.c*/#include<stdio.h>//内部函数int sayHi(){ printf("Hi,t...原创 2019-12-02 20:07:59 · 16423 阅读 · 3 评论 -
c和c++互相调用动态库
平时需要接触c和c++,有时会遇到两种语言互相调用的情况,这时就要对代码进行一些处理,做个记录。前提两种语言是无法直接互相调用的,原因在于c++支持重载,而c不支持。c++因为要支持重载,存在改名机制(也可能是因为有改名机制所以支持重载),即生成的中间文件会对函数名进行改写,将函数名与参数列表相结合生产新的函数名,这样就可以通过不同的函数名来区分重载函数了。而C语言没有改名机制,函数名未改动...原创 2019-11-20 00:31:58 · 4270 阅读 · 5 评论 -
Python调用c/c++动态库(二)
此处是一些延伸补充。先简单列一下:1, python中的字符串是string类型,无法更改,若c的api函数需要传入字符串并进行更改,需使用ctypes使用的create_string_buffer进行转换eg:c端动态库有一个函数,func_name(char * pName),在python端调用,func_name("Alex"),会提示<class 'TypeErro...原创 2019-11-08 16:40:42 · 527 阅读 · 0 评论 -
linux c文件相关操作
1,操作文件,需要文件句柄 ,头文件 #include<stdio.h>若用fgets函数读取文件内容,需要注意fgets函数的使用。函数声明:char *fgets(char *str, int n, FILE *stream)参数:str -- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。n -- 这是要读取的最大字符数(包括最后的空字符)。通常是使用...原创 2018-11-05 20:07:35 · 162 阅读 · 0 评论 -
c/c++获取可执行程序的绝对路径(Linux、Windows)
今天改动一个程序,需要在linux环境获取执行程序的绝对路径,搜索到两个函数,在此做下记录和对比。 函数1:char *getcwd(char *buf, size_t size); 头文件:unistd.h 获取到可执行程序的绝对路径,存放到buf中,size是指定的buf大小。若size指定的大小比 buf短,会返回NULL。若不知道buf的...原创 2019-04-02 15:45:20 · 22423 阅读 · 1 评论 -
Python调用c/c++动态库(一)
因为工作需求,最近要使用python在linux环境下调用c/c++的动态库,执行动态库中的函数。这种没接触过的内容,自然首先开启百度谷歌大法。经过一番搜索,尝试使用python的ctypes模块。 一、初识首先自然是查询文档了。附文档链接:https://docs.python.org/zh-cn/2.7/library/ctypes.htmlpython2.7文档描述:“cty...原创 2019-05-13 21:28:31 · 23161 阅读 · 10 评论