gpt4 book ai didi

const GLchar 引用的 C 字符串数组 **

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

我有一个 C 函数,需要使用 const GLchar ** 参数调用。

我不是一名 C 程序员(Perl 是我的游戏),但我试图从 Perl 调用 C 库。我已经包装了所有其他必需的功能(SWIG)。这是最后一个麻烦的事了。请不要因为我(缺乏)C 技能而贬低我。我正在尝试,只有当您确切知道要输入什么内容时,Google 才会提供帮助!

我知道 const GLchar ** 意味着它需要一个指向字符串数组(GLchar 数组)的指针。由于无法直接创建它,我必须首先创建一个 GLchar 数组:

    GLbyte *GLbyte_array(int size) {
return (GLbyte *) malloc(sizeof(GLbyte)*size);
}

所以我在 Perl 中使用它:

    my $var=GLbyte_array(20);

然后通过调用以下方式从 Perl 一次填充一个 char:

   void GLbyte_put(GLbyte *a, int i, char val) {
a[i] = val;
}

再说一遍,Perl:

    my $str="hello";
for(my $i; $i<length($str); $i++)
{ GLbyte_put($var, $i); }

一切都好。 (好吧,也许不好 - 但它有效)。我有一个包含单词“hello”的 C 字符数组。

我的解决方案是尝试构建一个由这些人组成的数组,并将我上面创建的数组放入其中。然后返回我所需的指针:

    const GLchar **get_GLbyte_array_ptr(GLbyte *a) {
char *arr[1];
arr[0]= a;
return (const GLchar**)arr[0];
}

Perl:

    my $ptr=get_GLbyte_array_ptr($var);

这显然是一堆废话。它编译然后出现段错误。

您能否推荐该问题的替代代码/修复方法?

最佳答案

而不是

return (const GLchar**)arr[0];

你能试试这个吗:

return (const GLchar**)&arr;

关于const GLchar 引用的 C 字符串数组 **,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438231/

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