Author Topic: Iup Version 3.25  (Read 2237 times)

0 Members and 1 Guest are viewing this topic.

Arnold

  • Hero Member
  • *****
  • Posts: 973
Iup Version 3.25
« on: January 04, 2019, 02:25:24 AM »
Hi Charles,

in the meantime the Iup toolkit has reached version 3.25 and I examined the examples to what extend they can be run with the new dlls in 32-bit and 64-bit, using oxygen.dll of July 2018. Maybe you are interested in what I have done so far:

created a folder IUP325 in projectsB and subfolders with these files:
\IUP325
   -> examples
   -> include (iup.h, iupdef.h, iupgl.h, iupkey.h - changed format from unix to ansi)
   -> IUP32  (iup.dll, iupgl.dll of iup-3.25_Win32_dll12_lib.zip)
   -> IUP64  (iup.dll, iupgl.dll of iup-3.25_Win64_dll12_lib.zip) 

deleted examples/Alarm1.bmp (not used?)
modified the examples to run in either 32-bit or 64-bit mode, replaced Ihandle* with sys in some cases.
added missing endings: 'as sys callback' in several callback functions. These functions are usually registered by using IupSetFunction (not recommended for new apps) or IupSetCallback / IupSetCallbacks. These endings are at least necessary for 64-bit.

There are some issues.

problems in 32/64 bit:
scanf2.o2bas (Linefeeds)

problems in 64-bit:
getparam1.o2bas, getparam2.o2bas (ReplaceBN, Linefeeds for IupMessagef)
gldemo1.o2bas, gldemo2.o2bas (painting does not work), but opengl3d.o2bas in 64-bit is ok
gldemo3.o2bas : odd behaviour

I think in 32-bit there is no real problem. The problem of getparam.o2bas / IupMessagef is described in my following message.

Roland


Arnold

  • Hero Member
  • *****
  • Posts: 973
Re: Iup Version 3.25
« Reply #1 on: January 04, 2019, 02:29:10 AM »
I modified the code of getparam2.o2bas a bit to show the problem. If I remove the comments of line 149 .. 168 the program will only run in 32-bit mode. In 64-bit mode the app will crash.

At first I thought the reason would be param_index in function param_action. But in fact the problem seems to be the function LineFeeds in function IupMessagef. If I use IupMessage then the app will run in 64-bit mode too. My second approach from line 171..186 also only works for 32-bit.

For me the code of Linefeeds looks good and it works for IupGetParam. But maybe there is something missing for IupMessagef in 64-bit? I am surprised that using crlf in my second try does not work in 64-bit neither. If nothing helps then IupMessage can be used in any case.

Code: [Select]
% filename  "getparam2.exe"

'uses rtl32
'uses rtl64
uses console

includepath "../include/"
#ifndef mode64bit     
   extern lib "../IUP32/iup.dll"
   uses "iup.h"   
   end extern
   extern cdecl
#else
   extern lib "../IUP64/iup.dll"
   uses "iup.h"   
end extern
#endif


function LineFeeds(char*fmt) as string
======================================
  string s=fmt
  sys i=1, le=len(s)
  byte bs at strptr fmt
  byte bd at strptr s
  indexbase 0
  do
    if i++ > le then exit do
    if bs=13
      @bs+=2
      bd=10
      @bd++
      le--
    else
      bd=bs
      @bs++
      @bd++
    end if
  end do
  return left s,le
end function

/*
function LineFeeds(char*fmt) as string
======================================
  string s=fmt
  sys i=1, le=len(s)
  #cpointer on
  byte *bs = strptr *fmt
  byte *bd = strptr s
  indexbase 0
  do
    if i++ > le then exit do
    if *bs=13
      bs+=2
      *bd=10
      bd++
      le--
    else
      *bd=*bs
      'bd[0]=bs[0]
      bs++
      bd++
    end if
  end do
  #cpointer off
  return left s,le
end function
*/

function param_action(sys dialog, int param_index, void* user_data) as sys callback   'int callback
printl "param_index " param_index
  select case param_index

  case IUP_GETPARAM_INIT
printl "IupGetParam - Init"
 
  case IUP_GETPARAM_BUTTON1
printl "IupGetParam - Button1 (OK)"
   
  case IUP_GETPARAM_BUTTON2
printl "IupGetParam - Button2 (Cancel)"

  case IUP_GETPARAM_BUTTON3
printl "IupGetParam - Button3 (Help)"
   
  case else
    sys param
    string param_str = " PARAM" & param_index
    param = IupGetAttribute(dialog, param_str)
printl param_str & ", " IupGetAttribute(param, "VALUE")     
   
  end select
 
  return 1
end function


IupOpen(null,null)

'GETPARAM TEST
==============

int   pboolean       = 1;
int   pinteger       = 3456;
float preal          = 3.543f;
int   pinteger2      = 192;
float preal2         = 0.5f;
float pangle         = 90;
char  pstring[100]   = "string text";
char  pfont[100]     = "Courier, 24";
char  pcolor[100]    = "255 0 128";
int   plist          = 2;
int   poptions       = 1;
char  pstring2[200]  = "second text" & chr(10) & "second line";
char  file_name[500] = "test.jpg";

 
int retp = IupGetParam("IupGetParamTest", @param_action, 0,
linefeeds(
"Bt      %u[, MyCancel, Help!]
Boolean: %b[No,Yes]
Integer: %i
Real 1:  %r
Sep1     %t
Integer: %i[0,255]
Real 2:  %r[-1.5,1.5,0.05]
Sep2     %t
Angle:   %a[0,360]
String:  %s
Options: %o|item0|item1|item2|
List:    %l|item0|item1|item2|item3|item4|item5|item6|
File:    %f[OPEN|*.bmp;*.jpg|CURRENT|NO|NO]
Color:   %c{Color Tip}
Font:    %n
Sep3     %t
Multiline: %m
"),
&pboolean, &pinteger, &preal, &pinteger2, &preal2, &pangle, &pstring,
&poptions, &plist, &file_name, &pcolor, &pfont, &pstring2, NULL)

printl "retp = " retp


string crlf=chr(13,10)

if retp != 0 then
'does not work in 64-bit
/*
IupMessagef("IupGetParam using IupMessagef",
linefeeds(
"Boolean Value: %d
Integer: %d
Real 1: %g
Integer: %d
Real 2: %g
Angle: %g
String: %s
Options Index: %d
List Index: %d
FileName: %s
Color: %s
Font: %s
Multiline: %s
"),
     pboolean, pinteger, double preal, pinteger2, double preal2, double pangle, pstring,
     poptions, plist, file_name, pcolor, pfont, pstring2)
*/
'does not work neither in 64-bit
/*
IupMessagef("IupGetParam using IupMessagef",
"Boolean Value: %d" + crlf +
"Integer: %d" + crlf +
"Real 1: %g" + crlf +
"Integer: %d" + crlf +
"Real 2: %g" + crlf +
"Angle: %g" + crlf +
"String: %s" + crlf +
"Options Index: %d" + crlf +
"List Index: %d" + crlf +
"FileName: %s" + crlf +
"Color: %s" + crlf +
"Font: %s" + crlf +
"Multiline: %s",
     pboolean, pinteger, double preal, pinteger2, double preal2, double pangle, pstring,
     poptions, plist, file_name, pcolor, pfont, pstring2)
*/

IupMessage("IupGetParam using IupMessage",
"Boolean Value: " + pboolean + crlf +
"Integer: " + pinteger + crlf + 
"Real 1: "  + str(preal,2) + crlf +
"Integer: " + pinteger2 + crlf +
"Real 2: "  + str(preal2,2) + crlf +
"Angle: "   + pangle + crlf +
"String: "  + pstring + crlf +
"Options Index: " + poptions + crlf +
"List Index: " + plist + crlf +
"FileName: " + file_name + crlf +
"Color: " + pcolor + crlf +
"Font: "  + pfont + crlf +
"Multiline: " + pstring2 + crlf 
)

end if
 
IupClose()

printl "Enter to end..."
waitkey

Arnold

  • Hero Member
  • *****
  • Posts: 973
Re: Iup Version 3.25
« Reply #2 on: January 04, 2019, 02:30:52 AM »
I did also not find out, why gldemo1,2,3 do not work in 64-bit, repaint_cb and pyramid() are executed, but the pyramid is not painted. Running opengl3d.exe in 64-bit there is no problem. Maybe something has to be considered with using winutil.inc?

Arnold

  • Hero Member
  • *****
  • Posts: 973
Re: Iup Version 3.25
« Reply #3 on: January 08, 2019, 10:47:14 AM »
Hi Charles,

I am working through the tutorial examples of the Iup toolkit and in the meantime I finished example_3_7 which will run in 32-bit and 64-bit. This is the link in the tutorial:
http://webserver2.tecgraf.puc-rio.br/iup/en/tutorial/tutorial3.html#Recent_Config

I know that dealing with the full set of Iup toolkit's possibilities will go beyond the scope of Oxygenbasic, maybe this can be provided in the sandbox. But perhaps there are some special cases which are generally interesting for O2 too.

In example 3_7 the file iup_config.h must be included. I tried:

includepath "../include/" 
#ifndef mode64bit     
   extern lib "../IUP32/iup.dll"
   uses "iup.h"
   uses "iup_config.h"
...

but this does not work. So I used unprototyped declarations:

includepath "../include/" 
#ifndef mode64bit     
   extern lib "../IUP32/iup.dll"
   uses "iup.h"
   'uses "iup_config.h"
'uses iup_config.inc
! IupConfig
! IupConfigRecentUpdate   
! IupConfigDialogClosed
! IupConfigSave
! IupConfigGetVariableStr
! IupConfigLoad
! IupConfigRecentInit
! IupConfigDialogShow   
   end extern
   extern cdecl
#else
...

It is also possible to add the ! statements in an .inc file. But perhaps there is also a way to use iup_config.h directly?

I have retrieved the existing function names of iup.dll with help of an impdef tool. Perhaps it is simpler to use these unprototyped functions in an .inc file instead of using the header files?

Roland

PS: running the app will create a config file: simple_notepad.cfg in c:\users\<username> which can be deleted.

Edit: I forgot to mention that I created the subfolder tutorial in folder Iup325. Example3_7.o2bas and NPimages16x16.inc are stored in this subfolder.  Iup_config.h is stored in \Iup325\include.
 
« Last Edit: January 08, 2019, 11:05:19 AM by Arnold »

John

  • Hero Member
  • *****
  • Posts: 3809
Re: Iup Version 3.25
« Reply #4 on: January 08, 2019, 12:54:58 PM »
Good News!

I'm looking forward to your progress with IUP.

Let me know when you're ready and we'll get this pushed to the sandbox.

Charles Pegge

  • Admin Support Member
  • *****
  • Posts: 4419
    • Oxygen Basic
Re: Iup Version 3.25
« Reply #5 on: January 10, 2019, 09:49:23 PM »
Hi Roland,

I'll look at this as soon as I can. My workload is piling up ...

Arnold

  • Hero Member
  • *****
  • Posts: 973
Re: Iup Version 3.25
« Reply #6 on: January 11, 2019, 11:49:50 PM »
Hi Charles,

there is no emergency as there are altenative solutions in O2. I only report these cases because I think they could be of general interest e.g. using two .h header files for the same dll.

I found a small problem in example3_7.o2bas, the option for setting the format does not work correctly. I modified in sub main(), line 339:

  'string font

and in line 354:
  char* font = IupConfigGetVariableStr(config, "MainWindow", "Font")    'note: must use char*

and everything works fine for me.

Roland

Arnold

  • Hero Member
  • *****
  • Posts: 973
Re: Iup Version 3.25
« Reply #7 on: January 15, 2019, 10:56:33 AM »
Hi Charles,

perhaps I do something wrong, but I cannot compile example3_7.o2bas and some other apps to 64-bit using  oxygen.dll in OXSC190115. Creating 32-bit exe files there is no problem.

I created a folder OXSC19 with the latest oxygen.dll, copied co2.exe and the \inc\subfolder of July 2018 into this directory and in /inc I replaced rtl32.inc with the version of 19.Nov.18 and rtl64.inc with the version of 12.Nov.18. With my editor I can distinguish between the two different distributions.

Interestingly there are apps like the listview in the previous thread which I can compile to a 64-bit exe and there are files like this example here which do not create a 64-bit exe. Must I use different include files or a different co2.exe?

There is also a different behaviour of co2.exe if I call it in a dos window. In the Oxygenbasic folder I get a message with the different compiler options. If I run co2 in the OXSC directory then there is no message. Is this intended?

Roland

Edit: to be sure I renamed in OXSC19 the subfolder /inc.  Version.o2bas will not compile which is expected. Unfortunately there is no error message about an absent include file. Perhaps I missed something.
« Last Edit: January 16, 2019, 01:54:00 AM by Arnold »

Arnold

  • Hero Member
  • *****
  • Posts: 973
Re: Iup Version 3.25
« Reply #8 on: January 16, 2019, 03:07:09 PM »
Oxygen works very well with Iup. In tutorial/scintilla_notepad I found this little demo (scintilladlg_notepad):

Code: OxygenBasic
  1. 'Iup Tutorial 3.12 Simple Notepad with Scintilla dialog
  2. $ filename "scintilladlg_notepad.exe"
  3.  
  4. 'if compiling to exe file then
  5. 'uncomment next line too because of arga[] in sub main()
  6. 'if no exe file then comment next line
  7.  
  8. '#define exefile
  9. 'uses rtl32
  10. 'uses rtl64
  11.  
  12. 'uses console
  13. uses sysutil
  14.  
  15. includepath "../../include/"  
  16. #ifndef mode64bit    
  17.    extern lib "../../IUP32/iup.dll"
  18.    uses "iup.h"
  19.    uses iup_config.inc
  20.    end extern
  21.    extern lib "../../IUP32/iupimglib.dll"
  22. ! IupImageLibOpen
  23.    end extern
  24.    extern lib "../../IUP32/iup_scintilla.dll"
  25.    uses "iup_scintilla.h"
  26.    end extern
  27.    extern cdecl
  28. #else
  29.    extern lib "../../IUP64/iup.dll"
  30.    uses "iup.h"
  31.    uses iup_config.inc  
  32.    end extern
  33.    extern lib "../../IUP64/iupimglib.dll"
  34. ! IupImageLibOpen
  35.    end extern
  36.    extern lib "../../IUP64/iup_scintilla.dll"
  37.    uses "iup_scintilla.h"
  38.    end extern
  39. #endif
  40.  
  41.  
  42. '********************************* Oxygen helper ****************************************
  43.  
  44. dim nCmdline as asciiz ptr, hInstance as sys
  45. &nCmdline = GetCommandLine
  46. hInstance = GetModuleHandle(0)
  47.  
  48.   macro CreateArgv
  49.   ================
  50.   sys    argv[64], argc
  51.   string arga[64]
  52.   string args=nCmdline
  53.   scope
  54.     indexbase 0
  55.     sys i=1
  56.     do
  57.       arga[argc]=unquote getword args,i
  58.       if ascb=0 then exit do
  59.       argv[argc]=strptr arga[argc]
  60.       argc++
  61.     end do
  62.   end scope
  63.   end macro
  64.  
  65.   CreateArgv
  66.  
  67.  
  68. string crlf=chr(13,10) 'Win carriage return \r\n
  69. string lf=chr(10) 'Unix (carriage) return \n
  70. string tab=chr(9) 'tab \t
  71.  
  72. '*************************************************************************
  73.  
  74. function item_help_action_cb() as sys callback
  75.   IupHelp("http://www.tecgraf.puc-rio.br/iup")
  76.   return IUP_DEFAULT
  77. end function
  78.  
  79. function item_about_action_cb() as sys callback
  80.   IupMessage("About", "   Scintilla Notepad" + crlf + crlf +"Autors:" + crlf + "   Camilo Freire" + crlf + "   Antonio Scuri")
  81.   return IUP_DEFAULT
  82. end function
  83.  
  84. sub main()
  85.   sys main_dialog
  86.   sys config
  87.   sys menu
  88.   int i
  89.  
  90.   IupOpen(0,0)
  91.   IupImageLibOpen()
  92.   IupScintillaOpen()
  93.  
  94. #ifdef _DEBUG
  95.   IupSetGlobal("GLOBALLAYOUTDLGKEY", "Yes")
  96. #endif
  97.  
  98.   config = IupConfig()
  99.   IupSetAttribute(config, "APP_NAME", "scintilla_notepad")
  100.   IupConfigLoad(config)
  101.  
  102.   main_dialog = IupScintillaDlg()
  103.  
  104.   IupSetAttribute(main_dialog, "SUBTITLE", "Scintilla Notepad")
  105.   IupSetAttributeHandle(main_dialog, "CONFIG", config)
  106.  
  107.   menu = IupGetAttributeHandle(main_dialog, "MENU")
  108.   IupAppend(menu, IupSubmenu("&Help", IupMenu(
  109.     IupSetCallbacks(IupItem("&Help...", NULL), "ACTION", @item_help_action_cb, NULL),
  110.     IupSetCallbacks(IupItem("&About...", NULL), "ACTION", @item_about_action_cb, NULL),
  111.     NULL)))
  112.  
  113.   ' show the dialog at the last position, with the last size
  114.  IupConfigDialogShow(config, main_dialog, IupGetAttribute(main_dialog, "SUBTITLE"))
  115.  
  116.   ' open a file from the command line (allow file association in Windows)
  117.  string fname
  118.   int ArgStart, ArgEnd, ArgCounter
  119.  
  120. #ifdef exefile
  121.   if argc>1 then ArgStart=2  
  122. #else
  123.   if argc>2 then ArgStart=3
  124. #endif
  125.  
  126.   if ArgStart>0 then
  127.      ArgEnd=ArgStart+10
  128.      for ArgCounter=ArgStart to ArgEnd
  129.      fname=arga[ArgCounter]
  130.      if len(fname) then
  131.        IupSetStrAttribute(main_dialog, "OPENFILE", fname)
  132.      end if
  133.      next ArgCounter
  134.   end if
  135.      
  136.   IupMainLoop()
  137.  
  138.   IupDestroy(config)
  139.   IupDestroy(main_dialog)
  140.  
  141.   IupClose()
  142.  
  143. end sub
  144.  
  145.  
  146. main()
  147.  

The demo will need these dlls: iup.dll, iupimglib.dll, iup_scintilla.dll (which includes Scintilla 3.6.6 functionality). With about 130 lines of main code it is possible to create an editor with more features than I was able to provide with my hedit project. And this demo is only a starting point.

Edit: Small modifications. Up to ten files can be opened at once.
« Last Edit: January 24, 2019, 12:49:00 AM by Arnold »

John

  • Hero Member
  • *****
  • Posts: 3809
Re: Iup Version 3.25
« Reply #9 on: January 16, 2019, 05:29:14 PM »
Hi Rolan,

I will be joining you soon with Script BASIC Windows 64 and IUP.

Until then, here is the IUP OpenGL demo running under CrossOver on my Ubuntu 64 laptop.

Code: OxygenBasic
  1.  
  2. includepath "iup/"      
  3. extern lib "IUP/iup.dll" cdecl      
  4. include "iup.h"
  5. extern lib "IUP/iupgl.dll" cdecl      
  6. include "iupglA.h"
  7.  
  8. includepath "$/inc/"
  9. include "minwin.inc"
  10. include "glWinUtil.inc"
  11. 'include "console.inc"
  12. indexbase 0
  13.  
  14. sys canvas,dlg
  15. float ang
  16.  
  17. extern cdecl
  18.  
  19. void pyramid()
  20. ==============
  21. {
  22.   GLColor3ub 255,255,0        
  23.   glbegin GL_TRIANGLE_FAN
  24.   glColor3ub   0, 128, 255 : glVertex3f  0.0,  1.0,  0.0
  25.   glColor3ub 255,   0,   0 : glVertex3f -1.0, -1.0,  1.0
  26.   glColor3ub 255, 255, 255 : glVertex3f  1.0, -1.0,  1.0
  27.   glColor3ub   0,   0, 255 : glVertex3f  1.0, -1.0, -1.0
  28.   glColor3ub   0, 255,   0 : glVertex3f -1.0, -1.0, -1.0
  29.   glColor3ub 255,   0,   0 : glVertex3f -1.0, -1.0,  1.0
  30.   glend
  31.  
  32.   GLBegin GL_LINES          
  33.   GLColor3ub 0,255,0        
  34.   float i,j
  35.   For i = -10 To 10
  36.     For j = -10 To 10
  37.       glVertex3f -10, -1,   j
  38.       glVertex3f  10, -1,   j    
  39.       glVertex3f  i,  -1, -10    
  40.       glVertex3f  i,  -1,  10    
  41.     Next
  42.   Next
  43.   GLEnd  
  44.  
  45. }
  46.  
  47.  
  48. 'static itr
  49. int repaint_cb(Ihandle *self)
  50. =============================
  51. {
  52.   static float t
  53.   'printl "repaint " self
  54.  IupGLMakeCurrent(self);
  55.   glClearColor(0.3f, 0.3f, 0.5f, 1.0f);  /* White */
  56.   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  57.   glEnable(GL_DEPTH_TEST);
  58.  
  59.   glMatrixMode(GL_MODELVIEW);
  60.   glPushMatrix();  /* saves current model view in a stack */
  61.   glTranslatef( 0.0f, 0.0f , -5.0f  )
  62.   glRotatef(t,0,1,0)
  63.   Pyramid();
  64.   glPopMatrix();
  65.  
  66.   IupGLSwapBuffers(self);  /* change the back buffer with the front buffer */
  67.   t+=.25 : if t>=360 then t-=360
  68.   sleep 12
  69.   return IUP_DEFAULT; /* returns the control to the main loop */
  70. }
  71.  
  72.  
  73. int resize_cb(Ihandle *self, int width, int height)
  74. ===================================================
  75. {
  76. 'printl "resize " self  " " width " " height
  77.  IupGLMakeCurrent(self);  /* Make the canvas current in OpenGL */
  78.  
  79.   /* define the entire canvas as the viewport  */
  80.   glViewport(0, 0, width, height);
  81.  
  82.   /* transformation applied to each vertex */
  83.   glMatrixMode(GL_MODELVIEW);
  84.   glLoadIdentity();           /* identity, i. e. no transformation */
  85.  
  86.   /* projection transformation (orthographic in the xy plane) */
  87.   glMatrixMode(GL_PROJECTION);
  88.   glLoadIdentity();
  89.   gluPerspective(60,4./3.,1.,15);
  90.   gluLookAt(0,1,0, 0,0,-5, 0,1,0);
  91.  
  92.   return IUP_DEFAULT; /* return to the IUP main loop */
  93. }
  94.  
  95.  
  96. function idle_cb() as sys callback
  97. ==================================
  98.   static int idle_count = 0
  99.   repaint_cb(canvas)
  100.   'print "IDLE_ACTION( count = "  idle_count ")" & cr
  101.  idle_count++
  102.   return IUP_DEFAULT
  103. end function
  104.  
  105.  
  106. function motion_cb(sys ih) as int callback
  107. ==========================================
  108.   return IUP_DEFAULT
  109. end function
  110.  
  111.  
  112. sub Init()
  113. ==========
  114.  
  115.   canvas = IupGlCanvas(NULL)
  116.   IupSetAttribute(canvas, "BUFFER","DOUBLE")
  117.   IupSetAttribute(canvas, "BUFFER","ANTIALIAS")
  118.   IupSetCallback(canvas, "ACTION", @repaint_cb);  
  119.   IupSetCallback(canvas, "RESIZE_CB",@resize_cb);
  120.   IupSetCallback(canvas, "MOTION_CB", @motion_cb)
  121.  
  122.   dlg = IupDialog(canvas)
  123.   IupStoreAttribute(dlg, "RASTERSIZE", "500x500")
  124.   IupStoreAttribute(dlg, "TITLE", "IUP 3D OpenGL")
  125.  
  126.   IupSetFunction ("IDLE_ACTION", @idle_cb)
  127. end sub
  128.  
  129.  
  130. sub main()
  131. ==========
  132.  
  133.   IupOpen(null,null)
  134.   IupGLCanvasOpen()
  135.   Init()
  136.   IupShowXY(dlg, IUP_CENTER, IUP_CENTER)
  137.   IupMainLoop()
  138.   IupClose()
  139.  
  140. end sub
  141.  
  142. main()
  143.  
  144. end extern
  145.  

Please excuse the poor quality gif image.

« Last Edit: January 16, 2019, 08:19:33 PM by John »

Arnold

  • Hero Member
  • *****
  • Posts: 973
Re: Iup Version 3.25
« Reply #10 on: January 17, 2019, 01:11:24 AM »
Hi John,

this is the gldemo1.o2bas which can be found in OxygenBasic\projectsB\Iup. In the zip file of my first message (quasi a subfolder \Iup325) I tried to add compiling the examples to 32-bit and 64-bit executables. gldemo1,2,3 are the only files where I cannot create correct 64-bit exes at the moment. But probably I did something wrong.

I suppose I should first of all install the latest OxygenBasicProgress of 15. January before I continue. The distribution provides oxygen.dll, co2.exe, gxo2.exe with a newer date and maybe some include files are updated too?

Roland
« Last Edit: January 17, 2019, 01:37:29 AM by Arnold »

John

  • Hero Member
  • *****
  • Posts: 3809
Re: Iup Version 3.25
« Reply #11 on: January 17, 2019, 11:09:56 AM »
I compiled it using the latest O2-Classic build. I haven't tried 64 bit yet with O2.  :-\

Charles Pegge

  • Admin Support Member
  • *****
  • Posts: 4419
    • Oxygen Basic
Re: Iup Version 3.25
« Reply #12 on: January 18, 2019, 01:36:49 AM »
Hi Roland,

I found a bug affecting 64bit null variadic calls in example3_7C.

This is resolved in the next OXSC, but there is also a workaround:

line 410
  recent_menu = IupMenu(NULL);

  recent_menu = IupMenu(NULL,NULL);





Arnold

  • Hero Member
  • *****
  • Posts: 973
Re: Iup Version 3.25
« Reply #13 on: January 19, 2019, 04:34:02 AM »
Hi Charles,

it seems to me that using OXSC19 with the include files of the latest OxygenBasicProgress.zip makes a big difference. I can compile the gldemo1/2/3 demos to correct 64-bit exe without any modifications. Also my tutorial examples, in particular scintilladlg_notepad.o2bas work as expected in 64-bit mode. I am definitely impressed.

Roland
« Last Edit: January 19, 2019, 05:12:02 AM by Arnold »