C/C++实战004:python调用c++的dll文件
1、之前添加一个头文件进行宏定义,这里我新增了一个fanuc.h头文件
#include <string>
using namespace std;
//定义宏
#ifdef DL1_API
#else
#define DL1_API extern "C" _declspec(dllimport)
#endif
DL1_API string transmission(string ip,string path);

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

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
这次没报错,也没有返回任何信息,头疼........

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

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

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

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

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