gpt4 book ai didi

php - 从 C 返回一个 char*,但在 PHP 中返回空

转载 作者:行者123 更新时间:2023-11-30 17:54:30 26 4
gpt4 key购买 nike

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

我用 C 语言编写了一个函数,它返回一个 char*,说:

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

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

$msg = foo();

$msg 在 var_dumped 时始终具有 String(0)=""

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

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

这有效。但我想通过直接调用 foo()

来获取消息

我错过了什么?

最佳答案

您需要持久分配 msg。要么将其设为全局变量,要么对其进行内存分配/新建。看起来您只是将其作为该函数中的局部变量分配在堆栈上。一旦函数返回,您返回的堆栈指针将指向垃圾。

关于php - 从 C 返回一个 char*,但在 PHP 中返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com