Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Why /NODEFAULTLIB in IGCN.GameServer?

Junior Spellweaver
Joined
Feb 18, 2011
Messages
108
Reaction score
41
Hi,

I'm putting some effort to build the source code shared by the IGCN team but I'm having serious issues because of the linker option "/NODEFAULTLIB:libcmt.lib". It's causing problems when linking to the libs the project depends on.

Does anyone have any idea why the devs don't want to use libcmt in the project?

Thanks.
 
Joined
Nov 4, 2012
Messages
928
Reaction score
544
Hi,

I'm putting some effort to build the source code shared by the IGCN team but I'm having serious issues because of the linker option "/NODEFAULTLIB:libcmt.lib". It's causing problems when linking to the libs the project depends on.

Does anyone have any idea why the devs don't want to use libcmt in the project?

Thanks.
Try to remove this param to see if is really required, you need to test it, if generate problems you will know why devs do not want to use it.
 
Junior Spellweaver
Joined
Feb 18, 2011
Messages
108
Reaction score
41
Soo why did you not explained at first post what happened?
Nobody have a crystal ball here xD

Well, what you asked me to do is like WhatToDo101 in programming.

I removed it from the linker configuration and nothing apparently went wrong.

My concern is about what can be hapening inside the box. I can't think of a reason to do that in the project as I didn't find any possible incompatibility issue with the libs.
 
Joined
Nov 4, 2012
Messages
928
Reaction score
544
Well, what you asked me to do is like WhatToDo101 in programming.

I removed it from the linker configuration and nothing apparently went wrong.

My concern is about what can be hapening inside the box. I can't think of a reason to do that in the project as I didn't find any possible incompatibility issue with the libs.

If all compile it fine, what is the problem of remove it?
Thats is why C++ have a compiler bro.
 
Junior Spellweaver
Joined
Feb 18, 2011
Messages
108
Reaction score
41
If all compile it fine, what is the problem of remove it?
Thats is why C++ have a compiler bro.

No man, you are just wrong.

The isolated fact that the project compiled do not means that everything went fine.

Nevermind, I should have imagined this kind of topic would not receive the intended attention :)



you just need to add this library to the project ....

Wut? libcmt.lib is one of the default libs of the CRT man. My question is why the devs removed this default lib from the linker...
 
Joined
Nov 4, 2012
Messages
928
Reaction score
544
No man, you are just wrong.

The isolated fact that the project compiled do not means that everything went fine.

Nevermind, I should have imagined this kind of topic would not receive the intended attention :)





Wut? libcmt.lib is one of the default libs of the CRT man. My question is why the devs removed this default lib from the linker...

I'm not wrong, specially if i already do not have this lib and server it runs fine. Test it before make conclusions.
Anywat it is true, if any part of projet still using this lib, they simple do not compile.



No man, you are just wrong.

The isolated fact that the project compiled do not means that everything went fine.

Nevermind, I should have imagined this kind of topic would not receive the intended attention :)





Wut? libcmt.lib is one of the default libs of the CRT man. My question is why the devs removed this default lib from the linker...

I'm not wrong, specially if i already do not have this lib and server it runs fine. Test it before make conclusions.
Anywat it is true, if any part of projet still using this lib, they simple do not compile.

EDIT: Look

This is exactly that you want to know.
 
Junior Spellweaver
Joined
Feb 18, 2011
Messages
108
Reaction score
41
I'm not wrong, specially if i already do not have this lib and server it runs fine. Test it before make conclusions.
Anywat it is true, if any part of projet still using this lib, they simple do not compile.

ROFL You don't understood what I said. I said you are just wrong if you think that an error-free compilation is all you need to assert that nothing went wrong in your code. TONS and TONS of things can get wrong in your binary even with an compilation that returns no error.

As I don't think you understood the problem I'll try to ilustrate it for you.

The linker option /NODEFAULTLIB tells the linker to NOT search for a specific (or all of them) CRT default libraries (libcmt is just ONE of the default CRT libs).

This option exists to be used basically when you have compatibility problems of versions of CRT in your solution or when you have custom CRT signatures.

My fisrt hint about the use of that in the project was the presence of VLD.lib in the project. VLD stands for Visual Leak Detector and is a solution that is supose to detect memory leaks in applications. One way VLD could accomplish that is exact by creating proxy signature of some CRT functions like malloc, free, new, delete. As I was recompiling all libs the project depends on and I was not mixing CRT versions in any of them I decided to seek for help here as the code is very big and I was trying to figure out a lot of things at once (which was apparently an error as people seems to just don't know about this subject or are just not willing to help as it appears to be your case).

As this is not applicable in ALL VLD use-case scenarious or it could just be something I was not seeing I created this topic to see if someone know why that option exists.

EDIT: Look

This is exactly that you want to know.

Where in the earth does this article would be "exactly what I want to know" dude? It just explains the different CRT libs.

Please take a note that removing that option could make your binary compile with no problems but as I said earlier something could went wrong even when compilation returns no error. Removing that option in some very specific scenario could kill the functionality of a lib such as the VLD (or ANY other possible plausible case). An error-free compilation ONLY means that your binary code was handled by the compile process. It DOES NOT means that the compiled code is exact what you expect it to be.
 
Back
Top