나는 좌절하는 문제가있어서 그 문제를 해결하는데 많은 시간을 할애했지만 어떤 해결책도 찾지 못했습니다.SWIG에서 문자열 인수를 인식하지 못합니다.
SWIG가있는 PHP에서 C++ 클래스를 사용하고 싶습니다. 내 공유 객체를 생성하고 그것을 몇 가지 방법에 대해 잘 작동하지만 자신의 입력으로 문자열 인수를 사용하여 메소드를 호출 할 때마다이 오류가있어 :
Fatal error: Type error in argument 2 of
PKI_Buf_initHex
. ExpectedSWIGTYPE_p_std__string
PKI_Buf_initHex
이 꿀꺽 꿀꺽가 자동으로 만들어 래퍼 클래스의 이름입니다 . 내 인터페이스 파일에 typemaps.i
및 std_string.i
을 포함하지만이 같은 오류 메시지를 받았습니다
int initHex(const string x)
{..}
: 나의 C++ 코드에서 나는 initHex
방법을 선언합니다.
누구든지이 문제를 해결할 수 있다면 정말 감사하겠습니다.
헤더에'using namespace std;'또는'std :: string;'이 있어야합니다. 첫 번째는 일반적으로 매우 나쁜 형식이며 SWIG의 경우 매우 나쁩니다. 후자는 SWIG가 처리 할 수없는 것입니다. 함수를'int initHex (const std :: string x)'로 선언하십시오. (Aside : 왜'const'입니까? 여기 값으로 전달하고 있습니다.) –
우선 여러분의 도움에 감사 드리며, 헤더 파일을 검사했습니다. 나는 네임 스페이스 std를 사용했다. 그래서 "std :: string"을 사용하여 "int initHex (const std :: string x)"함수로 변경했지만 아무것도 변경되지 않았습니다. 동일한 오류가 발생했습니다. 내 자신에 의해 코드를 구현하지 않았고, 소스 코드도 보지 못했습니다. 헤더 파일과 오브젝트 파일 만 있습니다. PHP로 코드를 개발해야합니다.) – A23149577
실제로 SWIG wrap.cpp 파일을 검사했습니다. 내 코드의 경우 SWIG가 문자열 유형을 잘 인식한다는 것을 알았습니다 : – A23149577