Página 1 de 1

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 13:33
por JoséQuintas

Código: Selecionar todos

:\CVSFiles\xhmg\SAMPLES\BASIC\Calc>hbmk2 calc         d:\cvsfiles\xhmg\xhmg.hbp
hbmk2: Processing environment options: -comp=mingw
Harbour 3.2.0dev (r1612161005)
Copyright (c) 1999-2016, http://harbour-project.org/
Compiling 'calc.prg'...
Lines 21686, Functions/Procedures 13
Generating C source output to 'c:\temp\hbmk_fzfg72.dir\calc.c'... Done.
d:/cvsfiles/xhmg/lib/libminigui.a(c_media.o):c_media.c:(.text+0x245): undefined reference to `MCIWndCreateA'
collect2.exe: error: ld returned 1 exit status
Alguém sabe como resolver esse erro?
hmg extended com mingw
Harbour 3.2

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 13:45
por JoséQuintas
Por enquanto resolvi inutilizando a função.

Código: Selecionar todos

   hwnd = 0 /* MCIWndCreate( ( HWND ) HB_PARNL( 1 ), NULL, Style, hb_parc( 2 ) ); */

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 13:56
por JoséQuintas
Pra configurar:

Código: Selecionar todos

SET MG_ROOT=d:\cvsfiles\xhmg

SET PATH=c:\windows;c:\windows\system32;d:\tools\util
SET PATH=%PATH%;%MG_ROOT%
SET PATH=%PATH%;%MG_ROOT%\harbour\bin
SET PATH=%PATH%;%MG_ROOT%\harbour\comp\bcc55\bin
SET PATH=%PATH%;%MG_ROOT%\harbour\comp\mingw\bin
SET HB_INSTALL_PREFIX=%MG_ROOT%\harbour
SET HB_COMPILER=mingw
SET HB_COMPILER_VER=
Pra gerar a LIB:

Código: Selecionar todos

dbginit.prg
ErrorSys.prg
h_activex.prg
h_animate.prg
h_browse.prg
h_btntextbox.prg
h_button.prg
h_checkbox.prg
h_chklabel.prg
h_chklistbox.prg
h_combo.prg
h_controlmisc.prg
h_crypt.prg
h_datepicker.prg
h_dialog.prg
h_dialogs.prg
h_draw.prg
h_edit.prg
h_editbox.prg
h_edit_ex.prg
h_error.prg
h_events.prg
h_folder.prg
h_font.prg
h_frame.prg
h_getbox.prg
h_Gif89.prg
h_gradient.prg
h_graph.prg
h_grid.prg
h_help.prg
h_hotkey.prg
h_hotkeybox.prg
h_hyperlink.prg
h_image.prg
h_imagelist.prg
h_ini.prg
h_init.prg
h_ipaddress.prg
h_label.prg
h_listbox.prg
h_media.prg
h_menu.prg
h_monthcal.prg
h_mru.prg
h_msgbox.prg
h_pager.prg
h_progressbar.prg
h_radio.prg
h_registry.prg
h_report.prg
h_richeditbox.prg
h_scrsaver.prg
h_slider.prg
h_socket.prg
h_spinner.prg
h_status.prg
h_tab.prg
h_taskdlg.prg
h_textbox.prg
h_timer.prg
h_toolbar.prg
h_tree.prg
h_wbrush.prg
h_webcam.prg
h_winapimisc.prg
h_windows.prg
h_windowsMDI.prg
h_winprop.prg

c_bitmap.c
c_browse.c
c_btntextbox.c
c_button.c
c_checkbox.c
c_chklabel.c
c_chklistbox.c
c_combo.c
c_controlmisc.c
c_crypt.c
c_cuebanner.c
c_cursor.c
c_datepicker.c
c_dialog.c
c_dialogs.c
c_editbox.c
c_error.c
c_folder.c
c_font.c
c_frame.c
c_getbox.c
c_graph.c
c_grid.c
c_help.c
c_hmgapp.c
c_hotkey.c
c_hotkeybox.c
c_icon.c
c_image.c
c_imagelist.c
c_ini.c
c_ipaddress.c
c_label.c
c_listbox.c
c_media.c
c_menu.c
c_monitors.c
c_monthcal.c
c_msgbox.c
c_pager.c
c_progressbar.c
c_radio.c
c_registry.c
c_resource.c
c_richeditbox.c
c_scrsaver.c
c_slider.c
c_spinner.c
c_status.c
c_tab.c
c_taskdlgs.c
c_textbox.c
c_timer.c
c_toolbar.c
c_tooltip.c
c_tree.c
c_winapimisc.c
c_windows.c
c_windowsAPI.c
c_windowsCLS.c
c_windowsMDI.c
c_winprop.c
c_winxp.c

-hblib
-o..\lib\minigui
-I..\include
-workdir=c:\temp
-inc
Pra compilar os exemplos:

Código: Selecionar todos

hbmk2 %1 %2 %3 %4 %5 %6 %7 %8 %9 %MG_ROOT%\xhmg.hbp
e de adicional pra compilar os exemplos

Código: Selecionar todos

#to compile samples hmg

#-lcputype
#-ldebugger
#-lhmg_qhtm
-lminigui
#-lminiprint2
#-lprocinfo
#-lpropgrid
#-lpropsheet
#-ltsbrowse
#-lWinReport

-Ld:\cvsfiles\xhmg\lib
-Id:\cvsfiles\xhmg\include

#need trash function Charrem() on h_Browse
-lhbct
Acho que isso vai eliminar 763 BATs de compilação que existem na HMG Extended
Não faço idéia de como avisar isso ao desenvolvedor, e no momento nem quero saber, porque estou só testando.
Se alguém tem acesso, é só fazer igual, ou parecido, já que aqui é pra atender meus testes.

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 14:17
por JoséQuintas
Sobre a função que faltou, aparentemente está lá nos #defines do bcc e do mingw.

Como não entendo nada de C, apenas desativei a chamada, igual ela faz com as rotinas do Harbour.
hmgextended.png

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 14:20
por JoséQuintas
Agora como testo os exemplos:
Entro na pasta, apago o compile.bat da pasta, e digito COMPILE exemplo
Assim é usado o BAT padrão que eu fiz, conforme já mostrei acima.

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 14:54
por JoséQuintas
Pra quem quiser OLHAR.
Tá pronto pra uso, HMG extended + harbour + mingw
Mas só estou registrando meus testes.

Todo ambiente que estou usando, e as modificações que estou fazendo.
Inclusive Harbour e compilador mingw (comecou com bcc)

https://github.com/JoseQuintas/testxhmg/commits/master

Notas:
Muito provavelmente vou apagar no final.
- Versão mais recente de hmg extended
- Versão do Harbour 3.2 de ontem
- mingw 5.3 que veio no Harbour 3.2

Ainda não testei no Harbour 3.4
Primeiro testando com o que a LIB diz ser válido pra ela, que é (bcc) mingw e Harbour 3.2.

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 15:38
por JoséQuintas
Esta parte é interessante:

Não deu certo com Harbour 3.2, então partir pra Harbour 3.4

A primeira mensagem de erro foi:

Na alteração que eu fiz, esqueci do ponto e vírgula.... rs

Achei curioso o Harbour 3.4 reclamar disso, e o 3.2 não.
O fonte é c_media.c, em linguagem C

O mais interessante ainda:
Como deu essa diferença, voltei ao fonte original da XHMG.
E não é que com Harbour 3.4 compilou direitinho....

Vai entender.... o fonte é em C, e o compilador é mingw.....

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 17:34
por JoséQuintas
Alarme falso.
Como apenas retirei as configurações pra assumir a default, apenas não trocou o que estava em uso, continuou o 3.2 que estava testando.... rs
E esqueci... não dá falta na compilação da minigui, e sim na hora do uso.

Do jeito normal não vai.
Com Harbour 3.2, compila (exceto aquela função que mencionei), mas não compila meu aplicativo.
Com Harbou4 3.4, não compila

Para uma LIB fora do padrão.... uma solução fora do padrão: usar minigui Harbour 3.2 com Harbour 3.4. Se tudo vira linguagem C, e a linguagem C é a mesma... teoricamente dá certo.

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 19:58
por JoséQuintas
Simplifiquei pra gerar a minigui.lib, tava chato de ajustar.
Retirei a errorsys dela e deixei a minha

Código: Selecionar todos

*.prg
*.c
-hblib
-o..\lib\minigui
-I..\include
-workdir=c:\temp
-inc

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 21:14
por JoséQuintas
Agora ficou mais interessante.
Refiz tudo, pra retirar lixo acumulado.

Só usar o Harbour que estiver instalado na máquina, tanto faz 3.2 ou 3.4

No caso de usar 3.4, antes precisa configuração especial pra gerar minigui com 3.2
O Harbour que está embutido é limitado a gerar a lib minigui e nada mais.
Depois que gerou a LIB, volta a máquina pra configuração normal.

Estou usando meu Harbour de sempre, 3.4, mas compilado com mingw.

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 21:36
por Jairo Maia
José, o link está quebrado. Aparece a mensagem: 404 - Esta não é a página que você está procurando.

Erro reference to MCIWndCreateA

Enviado: 23 Jan 2017 22:30
por JoséQuintas
Ok. é que refiz tudo, e acabei zerando tudo e criando um novo.

https://github.com/JoseQuintas/xhmgtest

é que o github guarda TUDO desde o começo.
Como tinha salvo compilador C e Harbour, tava gigante pra baixar, mesmo tendo apagado tudo, porque fazia parte da história
Por isso criei um novo.

Talvez precise de umas dicas pra parte inicial, mas se lembra do Clipper, consegue se virar.
Fui criando só o que fui precisando.

Com Harbour 3.4 não dá pra compilar a minigui.
Por isso deixei um 3.2 em \minigui\harbour
Como é pra gerar LIB, não precisa de DLL, LIB, etc., então deu pra enxugar.

Pra gerar a lib minigui, ou as LIBs internas, é setar o Harbour pra \minigui\harbour\bin

Pra usar, é voltar à configuração normal da máquina.
Vai precisar setar as pastas da minigui no hbp ou no bat, caso precise de ajuste:

Código: Selecionar todos

-I\minigui\include
-L\minigui\lib
Isso é apenas caso os arquivos existentes estejam fixados pras pastas que usei de teste.

Em \minigui\source, pra gerar minigui: hbmk2 minigui.hbp
Em \minigui, pra compilar: COMPILE.BAT
Em \minigui, também pra compilar, usado pelo compile.bat: xhmg.hbp

pra facilitar compilar os exemplos, só colocar \minigui no PATH pra funcionar o COMPILE.BAT em qualquer pasta

o compile.bat não tem nada demais, só acrescenta o xhmg.hbp
algo como: hbmk2 umfonte.prg \minigui\xhmg.hbp

Aonde deu, usei o original da minigui, que é MG_ROOT como pasta da minigui
onde não deu, tive que colocar minha pasta: d:\cvsfiles\xhmg

Até que no geral é pouca coisa que poderia precisar de algum ajuste.

Qualquer coisa é só perguntar.

Erro reference to MCIWndCreateA

Enviado: 24 Jan 2017 12:54
por JoséQuintas
Tem horas que não dá pra entender, por isso não gosto de misturar Harbour na máquina.
Tá compilando normalmente com Harbour 3.4, devo ter usado msvc da outra vez.
Por enquanto c_media.c continua com a linha bloqueada
NENHUMA outra alteração nos fontes.
Pode pegar a hmg extended oficial e fazer o que estou mostrando aqui.

No geral é indicar pasta include e lib da hmg, e indicar a(s) lib(s)
Pra gerar (falta o winreport, sei lá onde está), nem precisa mais hbp:

Código: Selecionar todos

hbmk2 source\*.prg source\*.c source\tget\*.prg       -hblib -olib\minigui    -Iinclude -workdir=c:\temp
pause
hbmk2 source\propgrid\*.prg   source\propgrid\*.c     -hblib -olib\propgrid   -Iinclude -workdir=c:\temp
pause
hbmk2 source\propsheet\*.prg  source\propsheet\*.c    -hblib -olib\minigui    -Iinclude -workdir=c:\temp
pause
hbmk2 source\tsbrowse\*.prg   source\tsbrowse\*.c     -hblib -olib\tsbrowse   -Iinclude -workdir=c:\temp
pause
hbmk2 source\socket\*.prg     source\socket\*.c       -hblib -olib\socket     -Iinclude -workdir=c:\temp
pause
hbmk2 source\miniprint2\*.prg source\miniprint2\*.c   -hblib -olib\miniprint2 -Iinclude -workdir=c:\temp
pause
hbmk2 source\qhtm\*.prg       source\qhtm\*.c         -hblib -olib\hmg_qhtm   -Iinclude -workdir=c:\temp
pause
pra usar, um hbp pode ser útil, como já disse antes. Só indicar LIBs e pastas

Código: Selecionar todos

-lhmg_qhtm
-lminigui
-lminiprint2
-lpropgrid
-lpropsheet
-ltsbrowse

-Ld:\cvsfiles\xhmg\lib
-Id:\cvsfiles\xhmg\include

hbct.hbc
-mt
##-strip
##-compr
Se tiver mais LIBs, acrescentar do mesmo jeito.
Agora chamei de LNK.HBP, porque lembra os LNK do RTLINK/BLINKER:
criando esse hbp, pra compilar um exemplo é só acrescentar ele no final da lista.

Código: Selecionar todos

hbmk2 exemplo1.prg exemplo2.prg exemplo3.prg lnk.hbp
Lógico... como o lnk.hbp vai estar em outra pasta, vai precisar indicar a pasta.
Por isso é interessante o BAT que mencionei em outro post.

Código: Selecionar todos

--- compile.bat
hbmk2 %1 %2 %3 %4 %5 %6 %7 %8 %9 \pastaminigui\lnk.hbp
Quando falo da LIB seguir o padrão Harbour, é pra coisas desse tipo.
Além de evitar 700 arquivos BAT, o usuário consegue enxergar e expandir as possibiildades.

Notas:

Aqui uso pra temporários ficarem em c:\temp (por isso tá no bat acima)
Assim de vez em quando apago tudo, ao invés de espalhar .hmk nas pastas
Só precisa tomar cuidado se for compilar projetos diferentes com nomes de arquivos iguais, porque vai misturar tudo.
Neste caso seria lembrar de primeiro apagar c:\temp antes de trocar de projeto

Desabilitei a errorsys da minigui, pra usar a minha, mas dá quase no mesmo.
Só renomear o fonte em \source pra ficar igual antes.Tá errorsys.xxx (se baixar no github)

É curioso poder usar o Harbour normalmente, e não ter essa informação lá.
Ou ficar pendente pra compilar com mingw por causa de uma única linha de fonte.

Tem horas que parece que tudo está andando pra trás.
desaprender ao invés de aprender, complicar ao invés de simplificar.

Talvez tudo ficasse mais fácil se fosse criado hbmk2 pro XHarbour, assim padronizaria de vez pelo menos essa parte.

Erro reference to MCIWndCreateA

Enviado: 24 Jan 2017 15:15
por JoséQuintas
Pequena correção na informação:
Parece que pra LIB não aceita *.prg *.c, tem que colocar os nomes mesmo, um por um.
Achei esquisito, porque a LIB é gerada, mas na hora do uso não acha nada.

Então é colocar a lista de fontes no lugar disso.
No prompt, >> acrescenta em arquivo existente.

Código: Selecionar todos

dir *.prg /b >> minigui.hbp
dir *.c  /b >> minigui.c
e o restante que já foi mencionado.