lua-users home
lua-l archive

Embedding Lua / IUP

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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
_____________________________________________


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________

AltStyle によって変換されたページ (->オリジナル) /