duno 发表于 2009-8-8 14:35:55

下面的东西可正常调用

#include "stdio.h"
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"

static int l_test(lua_State *L) {
double d = luaL_checknumber(L, 1); // 传参
lua_pushnumber(L, d * 0.1);      // 返回值
return 1;
};
static const struct luaL_Reg testlib [] = {
{"test", l_test},
{NULL, NULL}// 表明结尾
};
__declspec(dllexport)
int luaopen_test(lua_State *L)
{
luaL_register(L, "testlib", testlib);
return 1;
};

编译

gcc -shared -o testlibc.dll test.c -L. -llua5.1

其中各头文件放在编译器默认的Include目录

dll文件:\testlib\testlibc.dll

reg_func = package.loadlib ("testlib/testlibc.dll", "luaopen_test")
reg_func ()
n = testlib.test (3.14)
Note (n)

ddid 发表于 2009-8-8 14:49:12

duno可不可以把你编译的dll文件(testlibc.dll)上传上来,还有,lua5.1.dll是Gammon提供下载的那个么?

多谢了!hzn

duno 发表于 2009-8-8 14:51:44

ddid 发表于 2009-8-8 14:58:38

原帖由 duno 于 2009-8-8 14:51 发表 http://pkuxkx.com/forum/images/common/back.gif


我也囧……

我编译的testlibc.dll怎么就差着2K呢……

继续研究编译环境去……

谢了!

ddid 发表于 2009-8-13 00:44:10

终于搞定这个问题了!

Cygwin编译dll看来不行,直接在Windows的MingW下编译就可以了……

连Lua都不用安装,直接使用GAMMON提供的lua5.1.dll和那几个头文件就可以了,哈哈哈哈……
页: 1 [2]
查看完整版本: 我也发个求助贴——DLL编译,duno帮忙看看?