Chamando IUP átravez de C

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Chamando IUP átravez de C

wederson cabral
Boa tarde!

Estou fazendo um projeto escolar e pretendo o desenvolver em C e utilizar LUA junto com IUP para fazer a interface gráfica, sei que normalmente se é feito o contrario mas o professor exigiu que o programa deveria ser implementado em C, então resolvi aproveitar a oportunidade pra praticar o desenvolvimento em LUA, aprender mais sobre IUP e ainda entender melhor a integração entre LUA e C.

Hoje (com ajuda das pessoas dessa lista c:) consegui executar meus primeiros códigos em IUP sem nenhum problema, porem não estou tento o mesmo sucesso na hora de chamar as funções que envolvem IUP através da API C.

Estou compilando utilizando o GCC: gcc Programa.c -o executavel liblua.a

código C:
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
void error(lua_State *L, const char *fmt, ...){
 va_list argp;
 va_start(argp, fmt);
 vfprintf(stderr, fmt, argp);
 va_end(argp);
 lua_close(L);
 exit (EXIT_FAILURE);
}
void luaFuncao(lua_State *L, const char *arquivo, int x){
 int isnum;
 if(luaL_loadfile(L, arquivo) || lua_pcall(L, 0, 0, 0))error(L, "Arquivo nao pode ser lido: %s", lua_tostring(L,-1));
 lua_getglobal(L, "f");
 lua_pushstring(L, "Oi, tudo bom? c:");
 if(lua_pcall(L,1,0,0)!= LUA_OK)error(L, "Erro em executar a função f:%s", lua_tostring(L, -1));
 lua_pop(L, 1);
}

int main(){
 lua_State *L=luaL_newstate();
 luaL_openlibs(L);
 int x=5;
 char arquivo[]={"Main.lua"};
 luaFuncao(L, arquivo, x);
 lua_close(L);
 system("pause");
 return 0;
}


Código lua:
require("iuplua")
function f(x)
 iup.Message("~O~",x)
end



Erro:
        no field package.preload['iuplua']
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua\init.lua'
        no file '.\iuplua.lua'
        no file '.\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\lib\lua\5.3\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\loadall.dll'
        no file '.\iuplua.dll'


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Chamando IUP átravez de C

Antonio Scuri
  Bem o motivo do erro parece que ele não está encontrando a DLL necessária. Coloque as DLLs do IUP junto do executável que deve resolver.

  Mas mudando de assunto. Se o trabalho é em C, porque não faz tudo em C? IUP é originalmente em C, tem vários exemplos na página. Minha sugestão é simplificar agora para aprender e terminar por etapas. Depois você volta para Lua e refaz o trabalho em Lua como exercício... Acho que essa abordagem vai complicar o seu trabalho a toa... Só uma sugestão.

Abs,
Scuri


2017-05-17 20:19 GMT-03:00 wederson cabral <[hidden email]>:
Boa tarde!

Estou fazendo um projeto escolar e pretendo o desenvolver em C e utilizar LUA junto com IUP para fazer a interface gráfica, sei que normalmente se é feito o contrario mas o professor exigiu que o programa deveria ser implementado em C, então resolvi aproveitar a oportunidade pra praticar o desenvolvimento em LUA, aprender mais sobre IUP e ainda entender melhor a integração entre LUA e C.

Hoje (com ajuda das pessoas dessa lista c:) consegui executar meus primeiros códigos em IUP sem nenhum problema, porem não estou tento o mesmo sucesso na hora de chamar as funções que envolvem IUP através da API C.

Estou compilando utilizando o GCC: gcc Programa.c -o executavel liblua.a

código C:
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
void error(lua_State *L, const char *fmt, ...){
 va_list argp;
 va_start(argp, fmt);
 vfprintf(stderr, fmt, argp);
 va_end(argp);
 lua_close(L);
 exit (EXIT_FAILURE);
}
void luaFuncao(lua_State *L, const char *arquivo, int x){
 int isnum;
 if(luaL_loadfile(L, arquivo) || lua_pcall(L, 0, 0, 0))error(L, "Arquivo nao pode ser lido: %s", lua_tostring(L,-1));
 lua_getglobal(L, "f");
 lua_pushstring(L, "Oi, tudo bom? c:");
 if(lua_pcall(L,1,0,0)!= LUA_OK)error(L, "Erro em executar a função f:%s", lua_tostring(L, -1));
 lua_pop(L, 1);
}

int main(){
 lua_State *L=luaL_newstate();
 luaL_openlibs(L);
 int x=5;
 char arquivo[]={"Main.lua"};
 luaFuncao(L, arquivo, x);
 lua_close(L);
 system("pause");
 return 0;
}


Código lua:
require("iuplua")
function f(x)
 iup.Message("~O~",x)
end



Erro:
        no field package.preload['iuplua']
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua\init.lua'
        no file '.\iuplua.lua'
        no file '.\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\lib\lua\5.3\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\loadall.dll'
        no file '.\iuplua.dll'


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Chamando IUP átravez de C

wederson cabral
Primeiramente obrigado por responder !

O executável está na mesma pasta das DLL, na verdade até coloquei tudo na mesma pasta, pra tentar evitar esse tipo de problema, mas o erro persiste.

Sobre usar IUP com C, eu já tinha pensando nisso mas optei por LUA justamente pra dificultar o projeto, haha, eu sempre escolho ir pelo caminho mais difícil porque apesar de ser mais trabalhoso eu sempre acabo aprendendo bem mais, num projeto onde eu iria aprender a estrutura de arvore AVL(que é objetivo do projeto) e vou acabar aprendendo melhor a integração de LUA com C, a utilização da IUP e até mesmo o próprio LUA :). Infelizmente minha faculdade não é das melhores e os professores são bem desanimados, então eu sempre faço esses "upgrades" nos trabalhos que me passam pra conseguir aproveitar mais.

Em quarta-feira, 17 de maio de 2017 21:02:35 UTC-3, Antonio Scuri escreveu:
  Bem o motivo do erro parece que ele não está encontrando a DLL necessária. Coloque as DLLs do IUP junto do executável que deve resolver.

  Mas mudando de assunto. Se o trabalho é em C, porque não faz tudo em C? IUP é originalmente em C, tem vários exemplos na página. Minha sugestão é simplificar agora para aprender e terminar por etapas. Depois você volta para Lua e refaz o trabalho em Lua como exercício... Acho que essa abordagem vai complicar o seu trabalho a toa... Só uma sugestão.

Abs,
Scuri


2017-05-17 20:19 GMT-03:00 wederson cabral <<a onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;" href="javascript:" target="_blank" rel="nofollow" gdf-obfuscated-mailto="zmTqgw7MAQAJ">wederso...@...>:
Boa tarde!

Estou fazendo um projeto escolar e pretendo o desenvolver em C e utilizar LUA junto com IUP para fazer a interface gráfica, sei que normalmente se é feito o contrario mas o professor exigiu que o programa deveria ser implementado em C, então resolvi aproveitar a oportunidade pra praticar o desenvolvimento em LUA, aprender mais sobre IUP e ainda entender melhor a integração entre LUA e C.

Hoje (com ajuda das pessoas dessa lista c:) consegui executar meus primeiros códigos em IUP sem nenhum problema, porem não estou tento o mesmo sucesso na hora de chamar as funções que envolvem IUP através da API C.

Estou compilando utilizando o GCC: gcc Programa.c -o executavel liblua.a

código C:
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
void error(lua_State *L, const char *fmt, ...){
 va_list argp;
 va_start(argp, fmt);
 vfprintf(stderr, fmt, argp);
 va_end(argp);
 lua_close(L);
 exit (EXIT_FAILURE);
}
void luaFuncao(lua_State *L, const char *arquivo, int x){
 int isnum;
 if(luaL_loadfile(L, arquivo) || lua_pcall(L, 0, 0, 0))error(L, "Arquivo nao pode ser lido: %s", lua_tostring(L,-1));
 lua_getglobal(L, "f");
 lua_pushstring(L, "Oi, tudo bom? c:");
 if(lua_pcall(L,1,0,0)!= LUA_OK)error(L, "Erro em executar a função f:%s", lua_tostring(L, -1));
 lua_pop(L, 1);
}

int main(){
 lua_State *L=luaL_newstate();
 luaL_openlibs(L);
 int x=5;
 char arquivo[]={"Main.lua"};
 luaFuncao(L, arquivo, x);
 lua_close(L);
 system("pause");
 return 0;
}


Código lua:
require("iuplua")
function f(x)
 iup.Message("~O~",x)
end



Erro:
        no field package.preload['iuplua']
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua\init.lua'
        no file '.\iuplua.lua'
        no file '.\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\lib\lua\5.3\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\loadall.dll'
        no file '.\iuplua.dll'


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para <a onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;" href="javascript:" target="_blank" rel="nofollow" gdf-obfuscated-mailto="zmTqgw7MAQAJ">lua-br+un...@googlegroups.com.
Acesse esse grupo em <a onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow">https://groups.google.com/group/lua-br.
Para mais opções, acesse <a onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" href="https://groups.google.com/d/optout" target="_blank" rel="nofollow">https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Chamando IUP átravez de C

Denis Dos Santos Silva
In reply to this post by wederson cabral
UIP apesar de saber o que é nunca usei.

verifique se é compatível com a versão do Lua que está usando (lua 5.1.x não é 100% compatível com o 5.2.x que não é 100% compatível com o 5.3.x)

dê uma olhada em:


Em quarta-feira, 17 de maio de 2017 20:19:11 UTC-3, wederson cabral escreveu:
Boa tarde!

Estou fazendo um projeto escolar e pretendo o desenvolver em C e utilizar LUA junto com IUP para fazer a interface gráfica, sei que normalmente se é feito o contrario mas o professor exigiu que o programa deveria ser implementado em C, então resolvi aproveitar a oportunidade pra praticar o desenvolvimento em LUA, aprender mais sobre IUP e ainda entender melhor a integração entre LUA e C.

Hoje (com ajuda das pessoas dessa lista c:) consegui executar meus primeiros códigos em IUP sem nenhum problema, porem não estou tento o mesmo sucesso na hora de chamar as funções que envolvem IUP através da API C.

Estou compilando utilizando o GCC: gcc Programa.c -o executavel liblua.a

código C:
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
void error(lua_State *L, const char *fmt, ...){
 va_list argp;
 va_start(argp, fmt);
 vfprintf(stderr, fmt, argp);
 va_end(argp);
 lua_close(L);
 exit (EXIT_FAILURE);
}
void luaFuncao(lua_State *L, const char *arquivo, int x){
 int isnum;
 if(luaL_loadfile(L, arquivo) || lua_pcall(L, 0, 0, 0))error(L, "Arquivo nao pode ser lido: %s", lua_tostring(L,-1));
 lua_getglobal(L, "f");
 lua_pushstring(L, "Oi, tudo bom? c:");
 if(lua_pcall(L,1,0,0)!= LUA_OK)error(L, "Erro em executar a função f:%s", lua_tostring(L, -1));
 lua_pop(L, 1);
}

int main(){
 lua_State *L=luaL_newstate();
 luaL_openlibs(L);
 int x=5;
 char arquivo[]={"Main.lua"};
 luaFuncao(L, arquivo, x);
 lua_close(L);
 system("pause");
 return 0;
}


Código lua:
require("iuplua")
function f(x)
 iup.Message("~O~",x)
end



Erro:
        no field package.preload['iuplua']
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua\init.lua'
        no file '.\iuplua.lua'
        no file '.\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\lib\lua\5.3\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\loadall.dll'
        no file '.\iuplua.dll'


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Chamando IUP átravez de C

wederson cabral
In reply to this post by wederson cabral
Consegui resolver meu problema !

Tive que compilar o código C linkando com a biblioteca lua53.dll que veio na pasta de dll's do projeto IUP, achei isso um pouco estranho, pois usando a lua53.dll que eu compilei(tanto em 32bits quanto em 64) não estava funcionando, nem utilizando a lua53.dll que eu baixei já compiladas. Então fui dar uma investigada e vi que a lua53.dll que veio junto com os arquivos da IUP tem um tamanho diferente das que eu compilei e das pre compiladas que eu havia baixado. Alguém sabe da procedência desse arquivo ? 

caso alguém esteja tendo o mesmo problema que eu segue uma descrição da solução:

Compile o source C com:

gcc meucodigo.c -o executaveldomeucodigo lua53.dll

recomendo que utilize a mesma que veio junto com os arquivos da IUP, pois foi o que resolveu meu problema.

agora basta deixar o executável gerado e o arquivo LUA que sera integrado ao programa na mesma pasta das DLL do IUP.

Link para os arquivos IUP que eu utilizei: Oi, eu sou um link c: 

Em quarta-feira, 17 de maio de 2017 20:19:11 UTC-3, wederson cabral escreveu:
Boa tarde!

Estou fazendo um projeto escolar e pretendo o desenvolver em C e utilizar LUA junto com IUP para fazer a interface gráfica, sei que normalmente se é feito o contrario mas o professor exigiu que o programa deveria ser implementado em C, então resolvi aproveitar a oportunidade pra praticar o desenvolvimento em LUA, aprender mais sobre IUP e ainda entender melhor a integração entre LUA e C.

Hoje (com ajuda das pessoas dessa lista c:) consegui executar meus primeiros códigos em IUP sem nenhum problema, porem não estou tento o mesmo sucesso na hora de chamar as funções que envolvem IUP através da API C.

Estou compilando utilizando o GCC: gcc Programa.c -o executavel liblua.a

código C:
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
void error(lua_State *L, const char *fmt, ...){
 va_list argp;
 va_start(argp, fmt);
 vfprintf(stderr, fmt, argp);
 va_end(argp);
 lua_close(L);
 exit (EXIT_FAILURE);
}
void luaFuncao(lua_State *L, const char *arquivo, int x){
 int isnum;
 if(luaL_loadfile(L, arquivo) || lua_pcall(L, 0, 0, 0))error(L, "Arquivo nao pode ser lido: %s", lua_tostring(L,-1));
 lua_getglobal(L, "f");
 lua_pushstring(L, "Oi, tudo bom? c:");
 if(lua_pcall(L,1,0,0)!= LUA_OK)error(L, "Erro em executar a função f:%s", lua_tostring(L, -1));
 lua_pop(L, 1);
}

int main(){
 lua_State *L=luaL_newstate();
 luaL_openlibs(L);
 int x=5;
 char arquivo[]={"Main.lua"};
 luaFuncao(L, arquivo, x);
 lua_close(L);
 system("pause");
 return 0;
}


Código lua:
require("iuplua")
function f(x)
 iup.Message("~O~",x)
end



Erro:
        no field package.preload['iuplua']
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua\init.lua'
        no file '.\iuplua.lua'
        no file '.\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\lib\lua\5.3\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\loadall.dll'
        no file '.\iuplua.dll'


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Chamando IUP átravez de C

wederson cabral
In reply to this post by Denis Dos Santos Silva
Primeiramente obrigado por responder !

Já consegui resolver meu problema, como postei aqui agora a pouco.

Em quinta-feira, 18 de maio de 2017 08:48:57 UTC-3, Denis Dos Santos Silva escreveu:
UIP apesar de saber o que é nunca usei.

verifique se é compatível com a versão do Lua que está usando (lua 5.1.x não é 100% compatível com o 5.2.x que não é 100% compatível com o 5.3.x)

dê uma olhada em:
<a href="http://webserver2.tecgraf.puc-rio.br/iup/" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwebserver2.tecgraf.puc-rio.br%2Fiup%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFxjhQvBjONND16xhP_Sqid7m4t8Q&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwebserver2.tecgraf.puc-rio.br%2Fiup%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFxjhQvBjONND16xhP_Sqid7m4t8Q&#39;;return true;">http://webserver2.tecgraf.puc-rio.br/iup/
<a href="http://webserver2.tecgraf.puc-rio.br/iup/en/tutorial/tutorial.html" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwebserver2.tecgraf.puc-rio.br%2Fiup%2Fen%2Ftutorial%2Ftutorial.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNExiuk0xFijMObR7LHLg9fD7SOgVA&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fwebserver2.tecgraf.puc-rio.br%2Fiup%2Fen%2Ftutorial%2Ftutorial.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNExiuk0xFijMObR7LHLg9fD7SOgVA&#39;;return true;">http://webserver2.tecgraf.puc-rio.br/iup/en/tutorial/tutorial.html


Em quarta-feira, 17 de maio de 2017 20:19:11 UTC-3, wederson cabral escreveu:
Boa tarde!

Estou fazendo um projeto escolar e pretendo o desenvolver em C e utilizar LUA junto com IUP para fazer a interface gráfica, sei que normalmente se é feito o contrario mas o professor exigiu que o programa deveria ser implementado em C, então resolvi aproveitar a oportunidade pra praticar o desenvolvimento em LUA, aprender mais sobre IUP e ainda entender melhor a integração entre LUA e C.

Hoje (com ajuda das pessoas dessa lista c:) consegui executar meus primeiros códigos em IUP sem nenhum problema, porem não estou tento o mesmo sucesso na hora de chamar as funções que envolvem IUP através da API C.

Estou compilando utilizando o GCC: gcc Programa.c -o executavel liblua.a

código C:
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
void error(lua_State *L, const char *fmt, ...){
 va_list argp;
 va_start(argp, fmt);
 vfprintf(stderr, fmt, argp);
 va_end(argp);
 lua_close(L);
 exit (EXIT_FAILURE);
}
void luaFuncao(lua_State *L, const char *arquivo, int x){
 int isnum;
 if(luaL_loadfile(L, arquivo) || lua_pcall(L, 0, 0, 0))error(L, "Arquivo nao pode ser lido: %s", lua_tostring(L,-1));
 lua_getglobal(L, "f");
 lua_pushstring(L, "Oi, tudo bom? c:");
 if(lua_pcall(L,1,0,0)!= LUA_OK)error(L, "Erro em executar a função f:%s", lua_tostring(L, -1));
 lua_pop(L, 1);
}

int main(){
 lua_State *L=luaL_newstate();
 luaL_openlibs(L);
 int x=5;
 char arquivo[]={"Main.lua"};
 luaFuncao(L, arquivo, x);
 lua_close(L);
 system("pause");
 return 0;
}


Código lua:
require("iuplua")
function f(x)
 iup.Message("~O~",x)
end



Erro:
        no field package.preload['iuplua']
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua\init.lua'
        no file '.\iuplua.lua'
        no file '.\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\lib\lua\5.3\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\loadall.dll'
        no file '.\iuplua.dll'


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Chamando IUP átravez de C

Denis Dos Santos Silva
In reply to this post by wederson cabral
tranquilo; Em todo caso a observação feita pelo Antonio pode "salvar algum tempo" na prototipagem do programa/trabalho e então fazer uma versão nativa em C.



Em quarta-feira, 17 de maio de 2017 20:19:11 UTC-3, wederson cabral escreveu:
Boa tarde!

Estou fazendo um projeto escolar e pretendo o desenvolver em C e utilizar LUA junto com IUP para fazer a interface gráfica, sei que normalmente se é feito o contrario mas o professor exigiu que o programa deveria ser implementado em C, então resolvi aproveitar a oportunidade pra praticar o desenvolvimento em LUA, aprender mais sobre IUP e ainda entender melhor a integração entre LUA e C.

Hoje (com ajuda das pessoas dessa lista c:) consegui executar meus primeiros códigos em IUP sem nenhum problema, porem não estou tento o mesmo sucesso na hora de chamar as funções que envolvem IUP através da API C.

Estou compilando utilizando o GCC: gcc Programa.c -o executavel liblua.a

código C:
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
void error(lua_State *L, const char *fmt, ...){
 va_list argp;
 va_start(argp, fmt);
 vfprintf(stderr, fmt, argp);
 va_end(argp);
 lua_close(L);
 exit (EXIT_FAILURE);
}
void luaFuncao(lua_State *L, const char *arquivo, int x){
 int isnum;
 if(luaL_loadfile(L, arquivo) || lua_pcall(L, 0, 0, 0))error(L, "Arquivo nao pode ser lido: %s", lua_tostring(L,-1));
 lua_getglobal(L, "f");
 lua_pushstring(L, "Oi, tudo bom? c:");
 if(lua_pcall(L,1,0,0)!= LUA_OK)error(L, "Erro em executar a função f:%s", lua_tostring(L, -1));
 lua_pop(L, 1);
}

int main(){
 lua_State *L=luaL_newstate();
 luaL_openlibs(L);
 int x=5;
 char arquivo[]={"Main.lua"};
 luaFuncao(L, arquivo, x);
 lua_close(L);
 system("pause");
 return 0;
}


Código lua:
require("iuplua")
function f(x)
 iup.Message("~O~",x)
end



Erro:
        no field package.preload['iuplua']
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua\init.lua'
        no file '.\iuplua.lua'
        no file '.\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\lib\lua\5.3\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\loadall.dll'
        no file '.\iuplua.dll'


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Chamando IUP átravez de C

wederson cabral
Concordo plenamente !

Mas a ideia é justamente dificultar o trabalho, apesar de deixar tudo mais difícil eu vou aprender bem mais. Meus professores são bem "desanimados" então sempre passam uns trabalhos bem crus, então eu sempre faço esses upgrades para dificuldade o trabalho e aproveitar mais :)

Em quinta-feira, 18 de maio de 2017 11:40:27 UTC-3, Denis Dos Santos Silva escreveu:
tranquilo; Em todo caso a observação feita pelo Antonio pode "salvar algum tempo" na prototipagem do programa/trabalho e então fazer uma versão nativa em C.



Em quarta-feira, 17 de maio de 2017 20:19:11 UTC-3, wederson cabral escreveu:
Boa tarde!

Estou fazendo um projeto escolar e pretendo o desenvolver em C e utilizar LUA junto com IUP para fazer a interface gráfica, sei que normalmente se é feito o contrario mas o professor exigiu que o programa deveria ser implementado em C, então resolvi aproveitar a oportunidade pra praticar o desenvolvimento em LUA, aprender mais sobre IUP e ainda entender melhor a integração entre LUA e C.

Hoje (com ajuda das pessoas dessa lista c:) consegui executar meus primeiros códigos em IUP sem nenhum problema, porem não estou tento o mesmo sucesso na hora de chamar as funções que envolvem IUP através da API C.

Estou compilando utilizando o GCC: gcc Programa.c -o executavel liblua.a

código C:
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
void error(lua_State *L, const char *fmt, ...){
 va_list argp;
 va_start(argp, fmt);
 vfprintf(stderr, fmt, argp);
 va_end(argp);
 lua_close(L);
 exit (EXIT_FAILURE);
}
void luaFuncao(lua_State *L, const char *arquivo, int x){
 int isnum;
 if(luaL_loadfile(L, arquivo) || lua_pcall(L, 0, 0, 0))error(L, "Arquivo nao pode ser lido: %s", lua_tostring(L,-1));
 lua_getglobal(L, "f");
 lua_pushstring(L, "Oi, tudo bom? c:");
 if(lua_pcall(L,1,0,0)!= LUA_OK)error(L, "Erro em executar a função f:%s", lua_tostring(L, -1));
 lua_pop(L, 1);
}

int main(){
 lua_State *L=luaL_newstate();
 luaL_openlibs(L);
 int x=5;
 char arquivo[]={"Main.lua"};
 luaFuncao(L, arquivo, x);
 lua_close(L);
 system("pause");
 return 0;
}


Código lua:
require("iuplua")
function f(x)
 iup.Message("~O~",x)
end



Erro:
        no field package.preload['iuplua']
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\lua\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\share\lua\5.3\iuplua\init.lua'
        no file '.\iuplua.lua'
        no file '.\iuplua\init.lua'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\..\lib\lua\5.3\iuplua.dll'
        no file 'D:\Trabalhos\teste com LUA\teste com IUP\lib\loadall.dll'
        no file '.\iuplua.dll'


--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.