python调用c++函数时怎样传入const char*型的参数? 10C

python代码:


import ctypes
so = ctypes.cdll.LoadLibrary
lib = so("./build/liblandmark.so")
path = "/face/360p/1.jpg"
lib.landmark(1,ctypes.c_char_p(path))


c++代码:
#include
#include
#include
#include

#include "cv.h"
#include "highgui.h"

#include "face_detection.h"
#include "face_alignment.h"

#ifdef _WIN32
std::string DATA_DIR = "../../data/";
std::string MODEL_DIR = "../../model/";
#else
std::string DATA_DIR = "./data/";
std::string MODEL_DIR = "./model/";
#endif
extern "C"
{
seeta::FacialLandmark landmark(int argc, char*argv)
{
// Initialize face detection model
seeta::FaceDetection detector("./build/seeta_fd_frontal_v1.0.bin");
detector.SetMinFaceSize(40);
detector.SetScoreThresh(2.f);
detector.SetImagePyramidScaleFactor(0.8f);
detector.SetWindowStep(4, 4);
// Initialize face alignment model
seeta::FaceAlignment point_detector((MODEL_DIR + "seeta_fa_v1.1.bin").c_str());

//load image
const char* img_path = argv;
IplImage *img_grayscale = NULL;
img_grayscale = cvLoadImage(img_path, 0);

IplImage *img_color = cvLoadImage(img_path,1);
int pts_num = 5;
int im_width = img_grayscale->width;
int im_height = img_grayscale->height;


这里的 const char* img_path 传不进去,应该怎么办。尝试过static_cast强制转换类型,将传入c++的char*类型的数据通过static_cast转换为const char* 但还是不行

2个回答

传不进去是什么意思,是在cvLoadImage里取不到路径吗?这个函数是dll里的?如果这样你或许可以用string&试试

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
char*的参数传入函数
/* reverse the parameter */rnvoid reverseString2(char *str) rn char *end = str;rn char tmp;rn char tmp2;rn if (str) rn while (*end) end++;rn end--;rn while (str < end) rn tmp = *str;rn *str++ = *end;rn *end-- = tmp;rn rn rnrnrnint main(int argc, char **argv) rn char *test = (char*)"abcdefg";rn reverseString2(test);rn printf("%s\n", "abcdefg");rn return EXIT_SUCCESS;rnrnrn这段程序会报错诶,报在 *str++ = *endrn好像是因为改变了传入的*strrn我看到一本书上是这么用的,想问一下是因为main函数里面的char* test是常值的么?还是因为编译器不同,所以书上事例可以通过,我用的g++就没办法通过呢?rn谢谢!rn
函数fun(char*)中传入的是什么参数
头文件[code=c]void fun(char*);rnvoid fun(char *s);[/code]rn函数实现[code=c]#include "fun.h"rnvoid fun(char*)rnrn int a =1234;rn fun((char*)&a);rnrnvoid fun(char *s)rnrn char c;rn c = *(s+3);rn *(s+3) = *(s+0);rn *(s+0) = c;rnrn c = *(s+2);rn *(s+2) = *(s+1);rn *(s+1) = c;rn[/code]
const char * 怎样转化成 char *????
请教一下const char * 怎样转化成 char *?rn谢谢。。。
存储过程字符型参数过长,怎样传入?
CREATE PROCEDURE lei_testrn@sqlInner varchar(5000)rnASrnrndeclare @sql varchar(200)rnset @sql = 'select * from (' + @sqlInner + ') out1'rnexec (@sql)rnGOrnrnrn如果@sqlInner = "select * from T1 union select * from T2 union ...(连接很多次)"rn好像只能传入128个字符?
Python中将函数作为另一个函数的参数传入并调用
Python中将函数作为另一个函数的参数传入并调用 将函数作为另外一个函数的参数调用?听起来很复杂,其实动起手来很简单。下面跟我一起看看一些简单的例子,我尽量简单易懂: 下面这段代码涵盖了函数调用的函数的传参和不传参的两个方面: def func_a(func_a_arg_a, func, **kwargs): print(fun...
python调用c函数时返回含Null的char*
如题rn某c++函数 返回char*rn内容为"Hello\x00World!!!"rn已知长度rnpython如何接受?rnctypes,swig都直接映射成以NULL结尾的字符串(这个设计真不爽)rn
请教如何让 fun(char*) 函数接收 const char* 的参数?
请教个问题 一个函数rnfun(char*)rn当传入 const char* 作为参数时,会出现错误rncannot convert parameter 1 from 'const char *' to 'char *'rnrn例如 rnstring str;rnfun(str.c_str()); //就会出现上述错误rnrn然后只能rnfun((char*)str.c_str()); rn但程序里有很多调用的地方,每次都用(char*)来强制转换太麻烦了 有没有简便方法让它既能接收char* 又能接收const char* ?
char ch[] 参数传入的问题
rn我定义了一个 char sz[8] = "01234567";rnrn 对方提供一个参数 比如 a(char* sz);rnrn我把 sz传进去 a(sz), 调试运行 发现。。。 只有 0被传入了,其他的数据都不在了 。。。这何解?
const char*,char*和const char**,char**
c专家编程里说参数传递过程类似赋值,赋值必须满足一下两个条件之一:rnrn两个操作数都是指向有限定符或无限定符的相容类型的指针rn左边指针指向的类型必须有右边指针指向类型的全部限定符rnrn这么说来const char*类型指针是可以被char*类型指针赋值。但是个人感觉const char**和char**也满足第二个条件,因为const char**表示指向const char*类型的指针,char**指向char*类型的指针,const char*类型包含了char*类型的全部限定符,所以也可以赋值。rn感觉书上说的两个矛盾,很难理解。
const型的函数怎么回事?
学C++和BCB有一段时间了,可是还是不能理解const型的函数(即"函数声明 const"),不知道这样的函数和普通函数有什么区别?为什么要用这样的函数!rnrnrn解释时麻烦请解释的稍微详细一点(因为我有点笨:)),谢谢你!
关于const char * 参数的问题!!!!
[code=C/C++]rn#include "stdafx.h"rn#include rn#include rnusing namespace std;rnvoid fun(const char **pp);rnint _tmain(int argc, _TCHAR* argv[])rnrn const char *ss=NULL;rn fun(&ss);rn printf("ss is :%s\n",ss);rn system("pause");rn return 0;rnrnvoid fun(const char **pp)rnrn string str;rn str="hao";rn *pp=str.data();rn printf("*pp is :%s\n",*pp);rnrn[/code]rnrn以上代码想实现输出:rn*pp is : haornss is : haorn但实际输出是:rn*pp is : haornss is :rnrnrn经过跟踪发现,ss 和*pp的地址一样,但是ss的值为空。如何才能将实参ss赋值呢?
char const *和const char *的区别
请问在C语言中,char const * 和 const char * 什么区别
Python函数的定义、参数传入与函数的调用
作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色。今天给大家介绍Python函数的定义、参数的传入以及调用方式。其中函数参数的传入方式为本节重点内容。Python函数的参数形式包括必选参数、默认参数、可变参数、命名关键字参数以及关键字参数。五类参数可单独传入也可组合传入。 &amp;gt;&amp;gt;&amp;gt;&amp;gt; Python 函数的定义    Python中使用def语句来定义函数...
liunx python调用c++库(类、函数),传入传出参数
一、使用c++封装动态库 参考文献:http://www.linuxidc.com/Linux/2012-09/70502.htm 1.新建test类 1.1新建 test.cpp 文件 代码如下: #include            extern "C"             int myadd(int a, int  b)             {
const参数,const返回值与const函数 .
include 2 #include 3 using namespace std; 4 5 class person 6 { 7 private: 8     int id; 9     string name; 10 public: 11     person(int id, string name):id(id), name(name) 12     { 13  
(转)const参数,const返回值与const函数
原文地址:http://04051051.blog.163.com/blog/static/8600749320103100716140/          在C++程序中,经常用const 来限制对一个对象的操作,例如,将一个变量定义为const 的:  const  int  n=3; 则这个变量的值不能被修改,即不能对变量赋值。        const ...
partial 函数之参数传入
partial 函数之参数传入 zj@zj-virtual-machine:/tmp$ cat callback.py #!/usr/bin/env python # coding=utf-8 from functools import partial class D(object): def __init__(self, num): self._num = num ...
python 将列表作为参数传入函数时的测试与理解
python 将列表作为参数传入函数时的测试与理解 将一个列表传入函数后,会对这个列表本身产生什么改变? 这就是本文主要考察的内容。 list = [1,2,3,4,5,6,7] word = list.pop(0) print(word) print(list) # 输出结果理所当然地为: # 1 # [2, 3, 4, 5, 6, 7] # def a(temp): b = temp....
javascript函数传入函数的参数
这里有两段代码:rn第一段:rn rnrn第二段:rn rnrn请教:rn为什么第一段代码的警告框先输出2,再输出1?而第二段则相反呢?
C语言之函数的参数传入顺序
调用约定(Calling Conventions)定义了程序中调用函数的方式。 见:http://www.programlife.net/function-call-convention-styles.html   c/c++语言默认使用cdecl调用约定。参数传递从右至左,主调函数负责在函数调用之后恢复堆栈指针,因此可以支持可变参数。 #include &amp;lt;stdio.h&amp;gt; ...
const char* 声明参数跟 const char* const声明字符串参数有没有区别?
为何一个函数 我在 .h文件中用 const char* 声明参数,而在.cpp中用const char* const声明, 编译器编译完全正常通过, 甚至连警告都没有?rnrn它们是不是就是一回事?还是 跟 环境有关系? 比如设置某个编译条件,就会两者不同?
C 语言 char 型 字符串加法的 函数
哪个C语言函数可以实现 char型 字符串 str1 与str2 之间的加法。。。rn 例如: str1 = str2 + str2的前n 个字符;
const char 怎样转const unsigned short
我找了一段截屏并保存为jpg格式的程序,但是我想用系统时期作为图片名,用下面的语句:rn CString str1;//获取系统时间rn CTime tm;rn tm=CTime:: GetCurrentTime();rn str1=tm.Format("e://%Y年%m月%d日%H:%M:%S");rn str1+=".jpg";rn const char *str2=str1; //用年月日时间作为文件名保存。rn rn在保存图片的程序中有这样的语句 :rnconst unsigned short *pszFileName=L"C:\\new.jpg";//保存路径rnrn大神们帮下,这个const char 怎样转const unsigned short,或是怎么改才行呀。
SWIG-python的numpy参数传入C函数
SWIG-python的numpy参数传入C函数 简介 由于python需要调用c语言写的函数,且最好直接传入numpy的矩阵。 经查询,numpy直接提供一个numpy.i(swig配置格式)的文件供swig使用,可以将numpy格式转换成C可用的数组格式。 numpy获取地址:https://github.com/numpy/numpy numpy.i在目录中位置:num...
参数是const函数?
《C++Primer》第四版rn7.2.1 非引用形参rn1.指针形参rn如须要保护指针指向的值,则形参须定义为指向const对象的指针。rn-------rn问题:rn1.rn[code=c]rnvoid use_ptr(const int *p)rn rn[/code]rn上面函数,参数是const,怎么调用。rn给个实例!
函数 const参数
一段代码如下,现在运行红色两行会提示出错,应该是跟const有关,当我把蓝色的const去掉后,程序就能正常运行了。问题:我觉得不去掉const也没有错呀,为什么不行呢?rnrnclass Personrnrnprivate:rn char name[20];rn int age;rn char gender;rnpublic:rn Person()rn void SetName(char *n)strcpy(name,n);rn void SetAge(int a)age=a;rn void SetGender(char g)gender=g;rn char *GetName()return name;rn int GetAge()return age;rn char GetGender()return gender; rn;rnvoid PrintByGender([color=#0000FF]const [/color]vector &L,char sex)rnrn vector::[color=#0000FF]const_[/color]iterator iter=L.begin();rn for(;iter!=L.end();iter++)rn[color=#FF0000] if((*iter).GetGender()==sex)rn cout<GetName()<<" "<GetAge()<
python调用C函数时的数组传递
python调用C函数时的数组互传 2019-4-5 引言:最近需要对一个算法进行并行加速,最初使用python实现的,也尝试了用python中的多线程进行加速,后来才发现,python中的threading受制于GIL,同时只能使用一个核进行运算,所以搞了半天最后发现多线程和非并行算法在运行时间上无差别。当然我也尝试了multiprocessing模块,但我那个算法不适合用多进程的方法加速,...
python调用C的函数
python如何调用C的函数 需要用到ctypes这个库 官方文档 ctypes是python的一个外部函数库,它提供兼容C的数据类型,允许调用DLL或共享库中的函数。它可以用纯python来封装这些库 目前在pwn中使用过这个库 在 guess_num 这一题中,需要用栈溢出漏洞将 srand 的参数修改为自己的 参数,然后调用 rand 函数进行十次的伪随机数生成 这就需要用到 C 里面的...
python调用c的函数
python调用c的函数 环境:vs2017,python3.6 网址:为python添加c++扩展 配置环境 python 环境 下载vs2017,网址:vs2017社区版 安装vs2017,注意:在线安装的时候选择安装python,默认安装python3.6 打开vs2017 -&amp;gt; 视图 -&amp;gt;其他窗口 -&amp;gt;python 环境 注意: python3...
Python调用 c 的函数
例如要调用下面的函数: int add(int num1, int num2) { return num1 + num2; } 函数文件名为use.c,使用gcc编译器将其编译成动态链接库的形式: gcc -shared use.c -o use.so 最后在python通过加载该动态链接库并调用里面的函数即可: >>> from ctypes import * >>> us
Python调用C函数
软硬件环境 ubuntu 18.04 64bit windows 10 64bit Python 3.5.1 GCC 4.9 visual studio 前言 最近在做python3开发中,碰到了一个问题,需要通过调用C的一个动态链接库来获取相应的值。扒了扒网络,动手实践了下,形成此文。 linux版的动态库 写个简单的C代码,test.c #include &amp;lt;stdio.h&amp;gt; #...
const char* str1, char const *str2, char *const str3?
const char* str1, char const *str2, char *const str3?rn*str1, *str2都为const 的是不是str1 的定义和str2 的定义等价呢?
C语言中const char* 和char* const等常量的正确理解
不经常使用const的话,看过多少次都会忘记。让人很是郁闷!今天总结一下,找出规律便于以后记忆。 const char *p; //*p是const,p可变:const 后面紧跟的是char,所以*p是一个char字符,不可变 const (char *) p;//p是const,*p可变:const 后面紧跟的是(char *)这个整体,所以p是char*类型,不可变。 char* con
C#调用C++dll函数时char**输出参数问题
写了一个简单的使用char**输出字符串数组的方法,尝试在C#中调用,rnC++的函数声明如下:rn[code=C/C++]extern "C" __declspec(dllexport) int __stdcall Getpp(char** p);rn[/code] rn以下是在C#中的调用rn[code=C#]rn [DllImport("cppdll")]rn public static extern int Getpp(byte[] str);rnrn static void Main(string[] args)rn rn string[] strs = new string[2];rn int len = 50;rn byte[] buffer =new byte[len * 2];rn Getpp(buffer);rn for (int i = 0; i < 2; i++)rn rn strs[i] = Encoding.Default.GetString(buffer, i, len);rn i += len;rn rn rn[/code]rn为什么总是产生异常:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”?rn哪个达人帮帮忙,是不是取出char**输出参数的方式错了?rn谢谢。。。
const char* const* const* p;
-
python调用c/c++时string的传入与返回深入分析
ctypes可以轻松实现在python调用c/c++的库,但是这貌似没有对string类型的传入和返回有很好的支持。这篇文对传入string类型的参数进行分析并提供返回string替代方法......
关于const作为参数传入报错的问题
一个类的成员函数:rnclass Arnrn .....rn A::drawSomething([color=#FF0000]const[/color] Qpainter &painter,....)rn rn painter.drawLint(pointf2,pointf1);//此处报错148:41: error: passing ‘const QPainter’ as ‘this’ argument of ‘void QPainter::drawLine(const QPointF&, const QPointF&)’ discards qualifiersrn rnrnrn当把const去掉后,编译成功。rn问题:这个错误产生的原因,是QPainter不能作为常量吗?rn
const char* 如何转换成 BYTE 型
BYTE b;rnconst char* s = "hello";rnb = (BYTE)atoi(s);rncout << b << endl; rn输出的b的内容是空的,帮帮忙看下怎么转可以打印出正确的值rn万分感谢~~~
char ** and const char *
想做一个简单的赋值,结果不得,优点倒——rnrn[code=C/C++]rn#include rnusing namespace std;rnrnrnstruct FileInfornrn int count;rn char** names;rn;rnrnrnint _tmain(int argc, _TCHAR* argv[])rnrn FileInfo *myFileInfo = new FileInfo;rn myFileInfo->count = argc;rn myFileInfo->names[0] = "a.txt";rn const char* fileName = "b.txt";rnrn cout << "File count number is: " << myFileInfo->count << endl;rn cout << "Orig file name is: " << fileName << endl;rnrn strcpy(myFileInfo->names[1], fileName);rnrn cout << " Struct file name is: " << myFileInfo->names[1] << endl;rnrn return 0;rnrn[/code]rnrn为虾米??
char** 和 const char** 的区别
[code=C/C++]rn char *p1;rn const char *p2 = p1; //正确rn char **p3;rn const char** p4 = p3; //错误rn[/code]rnrn为什么const char** p4 = p3 会有错误呢?rn谢谢各位!
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数