Playing with 3D on Cerberus-X

Martin

Administrator
Joined
Jun 19, 2017
Location
Germany
What kind of meshes does your mesh tool load? I'm looking really forward to your next upload with more high level stuff as I'm currently checking out AGK2 vs your Vortex2 renderer. :)

Edit: I've quite some Irrlicht experience and used it several years in the past. :)
 
Last edited:

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
Hello again!

I started working on the high level stuff yesterday and am porting all the samples right now. Will push the changes most likely in a few hours.

About the model formats: I use Irrlicht to load the meshes in meshtool and then convert them to the native mesh format, so anything supported by Irrlicht will be supported by Vortex2. I have been working lately with the Assimp library, which supports a huge number of mesh formats, and might switch to that in Vortex2 in the near future (it is what AGK uses). The biggest gain would be FBX support.

About collision, my field of expertise is graphics and not collision, so the things I have been working on here are pretty basic. Box and sphere collisions are very easy to implement, so I will add those first, but I am not familiar with the math to do triangle collision detection. If anyone can point me to a good tutorial on it, it would be of great help. Another option would be to just extract that code from MiniB3D.

Last but not least, the problem with physics is that there are currently no 3D physics libraries for Cerberus, and writing one from scratch and maintaining Vortex2 would be a lot of work. I found one simple 3D physics library written in C++ that has a reasonably small amount of code, so porting it should be doable: https://github.com/RandyGaul/qu3e. Anyway, focusing on basic collision detection is way more important right now.
 

Martin

Administrator
Joined
Jun 19, 2017
Location
Germany
Thanks and I agree. Currently I don't need Physics that much but I could give it a try to port Bullet for instance to CX. I'm locking forward to your new uploads. :) Thanks so much for your work!
 

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
Wow, porting Bullet would be a LOT of work. Although it is pretty basic, the qu3e library that I posted should be enough for simple needs, and without any doubts, much easier to port.

I'll post the news here as soon as I have commited the changes (still working on it!). There won't be updated docs today, but you can always take a look at the samples.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
Looking forward to it too! And please, when you think it is ready for the public, please post an entry inside the module subforum.
 

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
Uploaded! Please have in mind that the API will change before final release, and so will the native mesh format, so you will need to reexport your meshes.

But you can check the demos in the "tests" directory to get an idea on how the new API works.
 

Martin

Administrator
Joined
Jun 19, 2017
Location
Germany
Awesome stuff, looks great. Doesn't seem to work for HTML5 though, at least I get this error:

GLFW is just fine!

Error: ERROR: 0:7: 'i' : Loop index cannot be compared with non-constant expression
How about 2d stuff? Can I just use normal 2d calls to draw over the 3d scene? Can I render (including 2d) to a texture? :)
I've noticed an "import game" in entity.cxs btw... Shouldn't harm but it isn't there.

About that Mesh Tool: Could you please go a bit more into detail what I can load and how I can convert it to this msh format? Thanks!

All in all, AWESOME work. Plus I like your coding style. Not that you can buy something from my words but I'm almost convinced to use it for my 3d project. Very, very well done indeed!

Will look into this Irrlicht Mesh Tool to see how I can convert my stuff.
 
Last edited:

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
Ok, the problem with HTML5 was in the vertex shader, WebGL does not seem to like for loops with variables instead of constants in the condition. I have fixed it.

About 2D support, Vortex is capable of drawing 2D primitives, textures and fonts, but Mojo2 is more advanced. I would love to add integration with Mojo2, and I will take a look at it after v2.0 for sure.

You can render to texture by creating a framebuffer like this:

Code:
'We create a 512x512 pixels framebuffer and enable depth testing when rendering to it:
Local fb:Framebuffer = New Framebuffer(512, 512, True)

'We enable rendering to this framebuffer
fb.Set()

'Perform rendering into it
World.Render()

'Enable rendering back to screen
Framebuffer.SetScreen()

'Now we can access the rendered texture with fb.ColorTexture
I have removed the "Import game" statement, it shouldn't be there anymore.

And I have also fixed the problems with meshtool and fonttool. Although they are Cerberus apps, they also rely on C++ tools. To build those tools, you should have a GCC compiler installed (on Windows, I use TDM-GCC-64) and run the build_tools script that you can find on the Vortex folder. After that, you should be able to run meshtool.cxs and fonttool.cxs.

Usage of both is fairly simple. I will write some docs before release. The more complex one is meshtool. Basically, you have three buttons on the toolbar:

- Create cube
- Load mesh (using Irrlicht)
- Save mesh in .msh format

Once a mesh is loaded, a panel appear on the right side, where you can change its material properties. Clicking on an option changes it value or opens a dialog to select another file (in case that the property is a texture). If you click cancel on a dialog, the element is removed (for example, to remove the normal texture, you click on it to open a dialog to select a new texture, and then click Cancel on the dialog).

Right clicking changes the camera mode so you can use typical FPS controls: WSAD to move and mouse to look around.

Thank you very much for your feedback! I'm glad you like this.
 
Last edited:

Martin

Administrator
Joined
Jun 19, 2017
Location
Germany
Right, got it working, thanks again!

When speaking about 2d "primitives" could you provide an example how you draw them?

Concrete I would need something like a texture I draw into using fonts and simple setting of pixels and display this texture as kind of an image then.

How difficult would be the mix with mojo2?

edit: Guess I found some in your Renderer Class like DrawPoint, DrawLine and so on. So I assume I have to set the renderer to render to that texture, call those commands and I'm done, right? Will try...
 
Last edited:

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
Meshtool doesn't build for me either. Fonttool does.

fonttool.cxs gives then the following errors:

"C:/Users/Micha/Desktop/FantomMonkey/Cerberus/bin/transcc_winnt" -target=Desktop_Game_(Glfw3) -config=Release -run "C:/Users/Micha/Desktop/FantomMonkey/Cerberus/modules_ext/vortex/meshtool.cxs"

TRANS cerberus compiler V2017-07-31

Parsing...

Semanting...

Translating...

Building...

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/context.o ../glfw3/src/context.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/egl_context.o ../glfw3/src/egl_context.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/init.o ../glfw3/src/init.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/input.o ../glfw3/src/input.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/monitor.o ../glfw3/src/monitor.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/osmesa_context.o ../glfw3/src/osmesa_context.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/vulkan.o ../glfw3/src/vulkan.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/wgl_context.o ../glfw3/src/wgl_context.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_init.o ../glfw3/src/win32_init.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_joystick.o ../glfw3/src/win32_joystick.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_monitor.o ../glfw3/src/win32_monitor.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_time.o ../glfw3/src/win32_time.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_thread.o ../glfw3/src/win32_thread.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_window.o ../glfw3/src/win32_window.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/window.o ../glfw3/src/window.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/stb_vorbis.o ../stb/stb_vorbis.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/stb_image.o ../stb/stb_image.c

g++ -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/main.o ../main.cpp

../main.cpp: In function 'void runSilentA(const char*)':

../main.cpp:5655:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

char * pDefaultCMD = "CMD.EXE";

^

../main.cpp: In function 'void runSilentW(const wchar_t*)':

../main.cpp:5713:26: warning: deprecated conversion from string constant to 'wchar_t*' [-Wwrite-strings]

wchar_t * pDefaultCMD = L"CMD.EXE";

^

g++ -m64 -L../openal/libs/Win64 -L../curl/lib/Win64 -Wl,--subsystem,windows -o Release64/CerberusGame build/Release64/context.o build/Release64/egl_context.o build/Release64/init.o build/Release64/input.o build/Release64/monitor.o build/Release64/osmesa_context.o build/Release64/vulkan.o build/Release64/wgl_context.o build/Release64/win32_init.o build/Release64/win32_joystick.o build/Release64/win32_monitor.o build/Release64/win32_time.o build/Release64/win32_thread.o build/Release64/win32_window.o build/Release64/window.o build/Release64/stb_vorbis.o build/Release64/stb_image.o build/Release64/main.o -lcomdlg32 -lgdi32 -lopengl32 -lOpenAL32 -lcurldll -lws2_32

build/Release64/main.o:main.cpp:(.text+0x2a36): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x2de0): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x82c4): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x84a4): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x90f2): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x9297): undefined reference to `__imp_CoUninitialize'

Makefile:53: recipe for target 'Release64/CerberusGame' failed

build/Release64/main.o:main.cpp:(.text+0x1176e): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x11a9b): undefined reference to `__imp_CoUninitialize'

TRANS FAILED: Error executing 'mingw32-make CCOPTS=" -m64 -O3 -DNDEBUG" LDOPTS=" -m64 -L../openal/libs/Win64 -L../curl/lib/Win64" OUT="Release64/CerberusGame"', return code=2

build/Release64/main.o:main.cpp:(.text+0x11b5e): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x11ec2): undefined reference to `__imp_CoUninitialize'

Done.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
I guess I have to reinstall it. I am just puzzeled that it compiles fonttool but not the meshtool.
 

JaviCervera

Member
3rd Party Module Dev
Joined
Jul 12, 2017
@MikeHart I can build meshtool with no problems here using TDM-GCC-64. Are you using that same compiler? Other versions of MinGW may use different runtime libraries. Your game looks great, what engine were you using? I would love to see that ported to Vortex2!

@Martin I don't know how difficult it would be to integrate it with Mojo, hopefully not much (will took a look into it in the near future).

About render to texture, here's an example:

Code:
Import mojo.app
Import vortex

Class TestApp Extends App
  Method OnCreate:Int()
    'Init Vortex
    If Not World.Init()
      Print Stats.ShaderError()
      EndApp()
    End
 
    'Create camera
    mCam = Camera.Create()
    mCam.SetPosition(0, 0, -3)
    mCam.ClearColor = Color.DARK_GRAY
 
    'Create framebuffer without depth buffer
    mFramebuffer = Framebuffer.Create(512, 512, False)
 
    'Create cube
    mCube = Model.Create(Primitive.CreateCube())
    mCube.Material(0).BaseTexture = mFramebuffer.ColorTexture
 
    'Create light
    Local light:Light = Light.Create()
    light.SetRotation(45, -45, 0)
  End
 
  Method OnUpdate:Int()
    'Update world
    World.Update()

    'Rotate cube
    mCube.Turn(32 * Stats.DeltaTime(), 32 * Stats.DeltaTime(), 0)
  End
 
  Method OnRender:Int()
    'Render to framebuffer
    mFramebuffer.Set()
 
    'Draw 2D stuff
    Renderer.Setup2D(0, 0, 512, 512)
    Renderer.ClearColorBuffer(Color.WHITE)
    Renderer.SetColor(Color.ORANGE)
    Renderer.DrawRect(Rnd(0, 512), Rnd(0, 512), Rnd(0, 512), Rnd(0, 512))
    Renderer.SetColor(Color.BROWN)
    Renderer.DrawRect(Rnd(0, 512), Rnd(0, 512), Rnd(0, 512), Rnd(0, 512))
    Renderer.SetColor(Color.GREEN)
    Renderer.DrawEllipse(Rnd(0, 512), Rnd(0, 512), Rnd(0, 512), Rnd(0, 512))
 
    'Render back to screen
    Framebuffer.SetScreen()
 
    'Render world
    World.Render()
  End
Private
  Field mCam      : Camera
  Field mFramebuffer  : Framebuffer
  Field mCube      : Model
End

Function Main:Int()
  New TestApp
  Return False
End
For some reason, it does not work on HTML5 (I'll take a look!), but it works fine on GLFW.

For the sample to compile, download the last commit from Git, since there are a few changes in the API.
 

Martin

Administrator
Joined
Jun 19, 2017
Location
Germany
Thanks. I just need glfw for now so no worries about non working HTML5 from my side. ;) will check it!

What I basically want to achieve in such for instance a sonar screen where I have a 3d mesh of a monitor and want to put a texture in front of it where I plot the sonar into.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
Your game looks great, what engine were you using?
Thank you, It is AGK2.

And I got Meshtool to compile. I had the path pointing to the 32bit version. For CX I had the content of the 64bit zip placed where CX needs it, but for your batch commands it could not find it. After setting the path collectly, I was able to build it.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
Argg, not I get errors compiling fonttool.cxs and meshtool.cxs.

I give up

Code:
"C:/Users/Micha/Desktop/FantomMonkey/Cerberus/bin/transcc_winnt" -target=Desktop_Game_(Glfw3) -config=Release -run "C:/Users/Micha/Desktop/FantomMonkey/Cerberus/modules_ext/vortex/meshtool.cxs"

TRANS cerberus compiler V2017-07-31

Parsing...

Semanting...

Translating...

Building...

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/context.o ../glfw3/src/context.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/egl_context.o ../glfw3/src/egl_context.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/init.o ../glfw3/src/init.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/input.o ../glfw3/src/input.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/monitor.o ../glfw3/src/monitor.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/osmesa_context.o ../glfw3/src/osmesa_context.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/vulkan.o ../glfw3/src/vulkan.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/wgl_context.o ../glfw3/src/wgl_context.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_init.o ../glfw3/src/win32_init.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_joystick.o ../glfw3/src/win32_joystick.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_monitor.o ../glfw3/src/win32_monitor.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_time.o ../glfw3/src/win32_time.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_thread.o ../glfw3/src/win32_thread.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/win32_window.o ../glfw3/src/win32_window.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/window.o ../glfw3/src/window.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/stb_vorbis.o ../stb/stb_vorbis.c

gcc -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/stb_image.o ../stb/stb_image.c

g++ -m64 -O3 -DNDEBUG -Wno-free-nonheap-object -I../curl/include -I../glfw3/include -I../glfw3/src -I../openal/include -I../stb -I../zlib-1.2.8 -I../lpng1610 -c -o build/Release64/main.o ../main.cpp

../main.cpp: In function 'void runSilentA(const char*)':

../main.cpp:5655:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

char * pDefaultCMD = "CMD.EXE";

^

../main.cpp: In function 'void runSilentW(const wchar_t*)':

../main.cpp:5713:26: warning: deprecated conversion from string constant to 'wchar_t*' [-Wwrite-strings]

wchar_t * pDefaultCMD = L"CMD.EXE";

^

g++ -m64 -L../openal/libs/Win64 -L../curl/lib/Win64 -Wl,--subsystem,windows -o Release64/CerberusGame build/Release64/context.o build/Release64/egl_context.o build/Release64/init.o build/Release64/input.o build/Release64/monitor.o build/Release64/osmesa_context.o build/Release64/vulkan.o build/Release64/wgl_context.o build/Release64/win32_init.o build/Release64/win32_joystick.o build/Release64/win32_monitor.o build/Release64/win32_time.o build/Release64/win32_thread.o build/Release64/win32_window.o build/Release64/window.o build/Release64/stb_vorbis.o build/Release64/stb_image.o build/Release64/main.o -lcomdlg32 -lgdi32 -lopengl32 -lOpenAL32 -lcurldll -lws2_32

build/Release64/main.o:main.cpp:(.text+0x2a36): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x2de0): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x82e4): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x84c4): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x9112): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x92b7): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x1178e): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x11abb): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x11b7e): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x11ee2): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x12046): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x1211f): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x1215c): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x122d2): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x13fe7): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x14332): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x14aa2): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x14bcf): undefined reference to `__imp_CoInitializeEx'

build/Release64/main.o:main.cpp:(.text+0x14d33): undefined reference to `__imp_CoUninitialize'

build/Release64/main.o:main.cpp:(.text+0x14d83): undefined reference to `__imp_CoUninitialize'

Makefile:53: recipe for target 'Release64/CerberusGame' failed

build/Release64/main.o:main.cpp:(.text+0x14d9e): undefined reference to `__imp_CoInitializeEx'

TRANS FAILED: Error executing 'mingw32-make CCOPTS=" -m64 -O3 -DNDEBUG" LDOPTS=" -m64 -L../openal/libs/Win64 -L../curl/lib/Win64" OUT="Release64/CerberusGame"', return code=2

collect2.exe: error: ld returned 1 exit status

mingw32-make: *** [Release64/CerberusGame] Error 1

Done.
 
Last edited:
Top Bottom