Tôi đã chương trình Lua tầm thường sau đó chúng tôi đã copy từ Programming cuốn sách Trong LuaKhông thể liên kết một chương trình Lua tối thiểu
#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main (void)
{
char buff[256];
int error;
lua_State *L = luaL_newstate(); /* opens Lua */
luaL_openlibs(L); /* opens the standard libraries */
while (fgets(buff, sizeof(buff), stdin) != NULL)
{
error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||
lua_pcall(L, 0, 0, 0);
if (error)
{
fprintf(stderr, "%s", lua_tostring(L, -1));
lua_pop(L, 1); /* pop error message from the stack */
}
}
lua_close(L);
return 0;
}
môi trường của tôi là cywin
làm cho tập tin của tôi trông như thế này:
CC=gcc
INCLUDE='-I/home/xyz/c_drive/Program Files/Lua/5.1/include'
LINKFLAGS='-L/home/xyz/c_drive/Program Files/Lua/5.1/lib' -llua51
li.o:li.c
$(CC) $(INCLUDE) -c li.c
main:li.o
$(CC) -o main $(LINKFLAGS) li.o
clean:
rm *.o
rm main
My/home/xyz/c_drive/Program Files/thư mục Lua/5.1/lib chứa lua5.1.dll lua5.1.lib lua51.dll và lua51.lib
Đang cố gắng để xây dựng mục tiêu chính của tôi Tôi nhận được các lỗi sau đây:
li.o:li.c:(.text+0x35): undefined reference to `_luaL_newstate'
li.o:li.c:(.text+0x49): undefined reference to `_luaL_openlibs'
li.o:li.c:(.text+0xaf): undefined reference to `_luaL_loadbuffer'
li.o:li.c:(.text+0xd9): undefined reference to `_lua_pcall'
li.o:li.c:(.text+0x120): undefined reference to `_lua_tolstring'
li.o:li.c:(.text+0x154): undefined reference to `_lua_settop'
li.o:li.c:(.text+0x167): undefined reference to `_lua_close'
Bất kỳ ý tưởng về những gì tôi có thể làm sai ở đây?
Bạn đã xây dựng lua51.lib như thế nào? Nếu lib được biên dịch bằng trình biên dịch C++ thì chương trình của bạn cũng phải được biên dịch (và liên kết) với trình biên dịch C++. – torus
Tôi đã tải xuống phiên bản bin từ trang web của lua ... Trình biên dịch tôi sử dụng là gcc (không phải g ++) .....Tôi sẽ cố gắng tải về mã nguồn và biên dịch nó – JohnP
Có một số phiên bản nhị phân khác nhau ở đó, được xây dựng với các trình biên dịch khác nhau. Bạn đã nhận được gói cụ thể nào? – Mud