小编the*_*man的帖子

ffi.C缺少所有符号的所有声明

我在文档中看到ffi.C.free是我可以用来释放malloc的东西.我试图在这里这样做:

callbacks.free_buffer = function(buffer) 
  print("free_buffer_callback") 
  ffi.C.free(buffer)
end
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

missing declaration for symbol 'free'
Run Code Online (Sandbox Code Playgroud)

这是否意味着我必须首先使用FFI来记忆内存?我不能在这个特定的函数中做到这一点(因为它是回调中的参数).我该怎么做才能释放这个缓冲区?

编辑:看起来所有的ffi.C函数都不起作用,即使在回调函数之外也是如此.我的ffi似乎工作正常吗?

c++ malloc lua ffi luajit

4
推荐指数
1
解决办法
635
查看次数

如何在放大纹理时关闭OpenGL过滤?

我在加载纹理时已经有了这些行:

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
Run Code Online (Sandbox Code Playgroud)

但是当我在渲染过程中缩放图像时:

glTexCoord2d(0.0,0.0);
glTexCoord2d(0.0454,0.0);
glTexCoord2d(0.0454,1.0);
glTexCoord2d(1.0,1.0);
Run Code Online (Sandbox Code Playgroud)

我对纹理的过滤非常糟糕(纹理是一个有多个框架的spritesheet,我宁愿不为每个框架制作单独的文件).

c c++ opengl scaling pixel

2
推荐指数
1
解决办法
1237
查看次数

创建一个回调结构以传递给LuaJIT FFI

所以首先我加载一个我需要的DLL

local ffi = require("ffi")
local theDLL = ffi.load("thisDLL")
Run Code Online (Sandbox Code Playgroud)

在ffi cdef我有两种不同的结构

ffi.cdef [[
    typedef struct StructSession StructSession;
    typedef struct {
        /*
        * begin_proj callback
        */
        bool (__cdecl *begin_proj)(char *proj);

        /*
        * save_proj_state
        */
        bool (__cdecl *save_proj_state)(unsigned char **buffer, int *len);
    } StructCallbacks;
Run Code Online (Sandbox Code Playgroud)

我在cdef中也有这个功能

__declspec(dllexport) int __cdecl start_session(StructSession **session,
                                                           StructCallbacks *cb);
Run Code Online (Sandbox Code Playgroud)

现在我想调用这个函数

print(theDLL.start_session(a,b))
Run Code Online (Sandbox Code Playgroud)

变量a和b显然是占位符,问题是如何传递函数所需的结构?并说我们得到StructSession工作,正在回复一个函数WITHIN LuaJIT甚至可以用于StructCallbacks?

c++ dll lua ffi luajit

2
推荐指数
1
解决办法
811
查看次数

LuaJIT FFI cdef不理解'课堂'?

class Myuser * MyClient_GetMyUser(AUser aUser);
Run Code Online (Sandbox Code Playgroud)

这是尝试使用ffi.cdef声明该函数的错误:

Error: dllImport.lua:861: declaration specifier expected near 'class' at line 20
Run Code Online (Sandbox Code Playgroud)

这怎么可能?如果我必须在cdef中这样做,我将如何宣布'课堂'?

c c++ lua ffi luajit

-2
推荐指数
1
解决办法
593
查看次数

标签 统计

c++ ×4

ffi ×3

lua ×3

luajit ×3

c ×2

dll ×1

malloc ×1

opengl ×1

pixel ×1

scaling ×1