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

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* 但还是不行

https://stackoverflow.com/questions/37966432/how-to-pass-const-char-from-python-to-c-function

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