0

我是 SWIG 的新手。我的问题如下:

我在 C 中编写了一个返回 a 的函数char*,例如:

char msg[100];
strcpy(msg,"helloworld");
char* foo(){
return msg;
}

当我在 C 中运行它时,我可以看到消息“helloworld”。问题是当我从 PHP 调用此方法(由 SWIG 从我的接口文件生成到 PHP 文件中)时:

$msg = foo();

$msgString(0)=""var_dumped 时总是有。

为了调试这个,我也做了:

  1. 每次都将此消息写入文件。
  2. 从 PHP 中读取相同的文件。

这行得通。但我想通过直接调用来获取消息foo()

我错过了什么?

4

1 回答 1

0

您需要持久分配 msg。要么让它成为一个全局的,要么为它做一个 malloc/new 的内存。看起来您只是将它作为该函数中的局部变量分配到堆栈上。一旦函数返回,指向您返回的堆栈的指针将指向垃圾。

于 2013-02-16T20:48:34.917 回答