C/C++实战004:python调用c++的dll文件

2025-04-20 23:18:03

1、之前添加一个头文件进行宏定义,这里我新增了一个fanuc.h头文件#include <string>using namespace std;//定义宏#ifdef DL1_API垆杪屑丝#else#define DL1_API extern "C" _declspec(dllimport)#endifDL1_API string transmission(string ip,string path);

C/C++实战004:python调用c++的dll文件

2、执行之后又报错:OSError: exception: access violation writing 0x0055002F,找半天也没找到有关的信息,翻译:OSError:异常:访问违规写入0x0055002F

C/C++实战004:python调用c++的dll文件

3、接着报错:指定的 C 链接,但返回了与 C 不兼容:警告 1 warning C4190: “transmission”有指定的 C 链接,但返回了与 C 不兼容的 UDT“std::basic_string<_Elem,_Traits,_Alloc>” e:\projects\fanucnc\fanucnc\fanuc.h 9 1 FanucNC这次没报错,也没有返回任何信息,头疼........

C/C++实战004:python调用c++的dll文件

4、 在函数中加句输出语句:printf(" i come here");,但是其他返回信息却没有...

C/C++实战004:python调用c++的dll文件

5、 前面提示 :警告 1 warning C4190: “fanuc”有指定的 C 链接,但返回了与 C 不兼容的 ,但改成char*就可以了,说明c返回值 不兼容string,所以在传入值中用string应该也有问题char* fanuc(char* ipaddr,char* pathName);{ //内容省略****}

C/C++实战004:python调用c++的dll文件

6、 那么新的问题也来了,c++中接受的是char*类型,那么意味着python传进来的值也应该是相同的类型,否知一样无法识别

C/C++实战004:python调用c++的dll文件

7、 这里我们把python也修改一下,将字符串进行转义,换成字节类型,这样两边就对接好了,再次执行我们就可以获取到当前函数的返回值了

C/C++实战004:python调用c++的dll文件

8、现在还有个问题需要解决的就是,int类型返回正常,但是用char*作为返回类型的话收到的是地址符,并不是字符串,这样python这边不无法分辨接受到的信息了,求大神指点一二了。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢