Hi,
I am hoping someone can help...
I have a quite large Lua / IUP script that I would like to make into an “executable” (Windows XP). To that end I thought I’d embed my lua script into a C program.
1. Starting from scratch I found a simple example (“Hello, World!”) of doing this with plain Lua. This worked...
2. Moving on to the next step I took a very simple IUP Lua example (text.wlua) and tried to get this working from C. This did not work..
3. To check that I had included the right IUP libraries etc I tried building the IUP example “sample.c” with the same VC project settings as #2. This worked.
The fact that #3 works suggests that I have all the right IUP libraries and dlls in all the right places. Which points the finger at the iuplua libraries.???
When I say it doesn’t work specifically the program just stops at getchar() (see code below) without anything else happening. The return value from luaL_dofile is 1.
I am using
Microsoft visual studio 2005. The free version.
IUP 2.7.1 (IUP libraries are this version too)
Lua 5.1
Lua for Windows.
My very simple cpp code is a copy of lua_init.c from the IUP web site. See below:
Could the problem be to do with calling conventions ? Visual C did not let me create a C project (only C++) I don’t know. It has been a long time since I did any windows programming (That’s why I am using Lua / IUP.!!)
Can anyone suggest anything or better still send me a working VC project (I live in hope J)
Many thanks
Bob
#include <stdio.h>
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include <iup.h>
#include <iupcontrols.h>
#include <iuplua.h>
//#include <iupluacontrols.h>
lua_State* L;
int main ( int argc, char *argv[] )
{
IupOpen(&argc, &argv);
// IupControlsOpen();
// Lua 5 initialization
L = lua_open();
luaL_openlibs(L);
iuplua_open(L);
// iupcontrolslua_open(L);
// do other things, like running a lua script
luaL_dofile(L, "text.wlua");
// IupMainLoop();
lua_close(L);
IupClose();
/// pause
printf( "Press enter to exit..." );
getchar();
return 0;
}
And text.wlua is
require( "iuplua" )
text = iup.text{value = "Write a text; press Ctrl-Q to exit"}
function text:k_any(c)
if c == iup.K_cQ then
return iup.CLOSE
end
return iup.DEFAULT
end
dlg = iup.dialog{text; title="IupText"}
dlg:showxy(iup.CENTER, iup.CENTER)
iup.SetFocus(text)
if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
iup.MainLoop()
end
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
_____________________________________________