Click here to Skip to main content
15,901,035 members
Please Sign up or sign in to vote.
3.00/5 (1 vote)
See more:
how to disable LNK4049 error warning?
Posted

The best is not to disable (i.e. ignore) the linker warning, but fix the issue that the linker is prompting: the LNK4049 warning means that you have declare something as __declspec(dllexport) inside a module of your project, and as __declspec(dllimport) on another module of the same project.

If what you want is to reference something that you have instantiated on another module (i.e. another .c or .cpp file), simply declare it using extern.

If you really need to import or export that symbol to/from another executable, you should declare the symbol with the same linkage on both your modules (i.e. or as __declspec(dllexport) on both, or as __declspec(dllimport) on both).
 
Share this answer
 
Instead of using __declspec(dllimport) and __declspec(dllexport) in header file, which would (most probably) be common for both DLL and the EXE (or another DLL); you can define a common macro:

#ifdef DLL_PROJECT
#define IMPORT_EXPORT __declspec(dllexport)
#else
#define IMPORT_EXPORT __declspec(dllimport)
#endif


For the you need to define DLL_PROJECT in DLL project. You should name this macro to something meaningful, like MP3CODEC_DLL, so that it doesn't clash with some other projects/header files:
#ifdef MP3CODEC_DLL
#define CODEC_IMPORT_EXPORT __declspec(dllexport)
#else
#define CODEC_IMPORT_EXPORT __declspec(dllimport)
#endif</pre>
And then use CODEC_IMPORT_EXPORT in your header file.
 
Share this answer
 
See here[^].
 
Share this answer
 
Add the following as a additional linker option:

/ignore:4049

This is in Properties->Linker->Command Line
 
Share this answer
 
I found the huge number of 4049 errors in the standard libraries to be due to the COMPILER setting (Only microsoft would put this under compiler settings) "Runtime Library" mismatch. My included library was built with 'MultiThreaded Debug DLL' but my main program was built with 'Multithreaded Debug'. Making 'em match got rid of all those issues.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900