Load 3d library in monkey 2

About Monkey 2 Forums Monkey 2 Programming Help Load 3d library in monkey 2

This topic contains 15 replies, has 3 voices, and was last updated by  Yue 4 months, 1 week ago.

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
  • #16028


    Hello, What is the equivalent in Monkey 2 to do the following that I do in BlitzMax?


    Monkey 2?



    That’s actually a very good question, not sure how this would be done in Monkey2. I think you would need to make a Monkey2 module that wraps Gear3D as of now. Any other comments?



    First you need to import “<win32>”, that imports the file /modules/win32/win32.monkey2

    LoadLibrary and GetProcAddress are not imported yet, so you need to add it. LoadLibraryA uses ASCII chars, so better use LoadLibraryW for wide chars (Unicode).

    If LoadLibrary() and GetProcAddress() get added to the win32 import, you could remove the ‘Extern’ section.

    Of course untested, but that’s the general way how it would work with dynamic loading of DLL functions at runtime.
    If you have a DLL import file (.lib), you could directly import it. If the DLL uses ASCII strings, a conversion from Unicode to ASCII would be required for the strings.

    If you have a Unicode version of the .dll you would use this.



    It’s not working. Some expert, if you want I can compile a simple library that returns a number for a simple test.




    Shouldn’t be a problem. 🙂 Please give download links for test lib and latest gear3d.



    Ok, 🙂

    Here download.


    Load Gear3d.dll
    Functions on lib.

    “_InitG3D” ( 2 variables, height, widht secreen)
    “_SetAppTitle” ( 1 variable string App Title)
    “_RenderStage” ( Not Variables)
    “_FlipStage”)  ( Not Variables )

    Thanks You. 🙂


    • Is Gear3D compiled for 32bit or 64bit?
    • Ascii or Unicode?
    • What type are the function parameters?
      • InitG3D( Byte, Byte )
      • InitG3D( Word, Word )
      • InitG3D( Int, Int ) ?


    I’ve made it work in BlitzMax NG, but I can’t in Monkey 2, because everything is more confusing and I don’t consider myself a programmer.

    for 32 bits.
    Ascii or Unicode.



    Here result.



    That GetProcAddress() method brings up some casting issues,

    so it is probably easier to import a “Gear3D.lib” (DLL import).


    I made a quick test using LoadLibrary and GetProcAddress in a C++ file. File is attached.

    Compile it and put Gear3D.dll and Link.dll in Gear3D.products/Windows/ folder, so Gear3D.exe can find the DLLs.

    1. Gear3D.zip


    In monkey 2 everything is very different, but I can’t make it work.  I wonder what the downside will be.




    Ok, this already works, when translating my lack of attention I haven’t noticed where to put the libraries correctly.

    So I already have something to investigate, by the way I did not know how to stop the application, so it touched me to close moneky 2, and when I return from work I give it a deep look. Now I have some motivation to investigate with Monkey 2.

    Thank you very much.




    by the way I did not know how to stop the application


    I put a counter 0 to 1001 in the code, otherwise it would Repeat..Forever.
    The window title counts to 1001 and quits.



    No, at the moment there is no way out of the application, I only have those functions, I regret the drawbacks, in blitzmax ng the output is through the interfaces of the code writing ide.

    If I can make this work I’m going to put more commands to the library and possibly be another alternative especially for BlitzMax NG and why not, for Monkey2.

    One question that I still have to answer is that these are casting errors? When I was compiling in BlitzMax and switching to BlitzMax NG, I had some strange problems, so I have to modify certain points when exporting the library for NG. In such a case if that is corrected, is it possible to load the library in Monkey 2 without creating .h and C files?

    Translated with http://www.DeepL.com/Translator



    > is it possible to load the library in Monkey 2 without creating .h and C files?

    Monkey2 is a little bit different because it translates to C++.
    When you import something, you need to tell Monkey2 and the C++ compiler about that stuff.
    If you don’t tell Monkey2, it does not know the functions.
    If you don’t tell C++, it does not know the functions and you will get an error.

    So you need at least the Monkey2 ‘Extern’ import section and the C/C++ header with the functions/classes.

Viewing 15 posts - 1 through 15 (of 16 total)

You must be logged in to reply to this topic.