F1(conchchar * STR)在向C++应用SWI时与F1(char * STR)不同吗?

2024-04-18 05:20:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用SWIG将C++库转换为Python库。你知道吗

我有一个头文件和一个源文件(忽略一些琐碎的事情):

试验h

void f1(char* str);

你知道吗测试.cc你知道吗

void f1(const char* str) {
    /* do something */
}

当我构建它时,它不会抛出任何关于这种不匹配的错误或警告。你知道吗

但是当我在Python中导入SWIG生成的模块时:

>>> import (MYMODULE)
 ImportError: /usr/local/lib/libMYMODULE.so: undefined symbol: _ZN2f14str12iii

出现上述错误。你知道吗

但是,在将头文件和源文件固定为具有相同的参数,const char* str之后,错误得到了解决。你知道吗

我想知道,为什么C++编译器和Builder不犯错误或警告,把事情变成SWIG和Python的问题。你知道吗


Tags: 模块警告头文件错误事情dosomethingswig
1条回答
网友
1楼 · 发布于 2024-04-18 05:20:32

实际上,char*const char*是不同的类型。你知道吗

您声明了两个重载函数,但只定义了一个。这不是一个错误,只要您不尝试调用或以其他方式使用未定义的一个。如果这样做,您将得到一个链接时间错误;因为您已经构建了一个动态库,所以只有在加载库时才会检测到这个错误—在本例中,是由Python解释器检测到的。你知道吗

相关问题 更多 >