Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I work around warning C4505 in third party libraries?

I've got a project that uses Crypto++ for a few hashing functions. Recently, I decided to clean things up a bit and use warning level 4 on MSVC++.

Here's what my source looks like:

#pragma warning(push)
#pragma warning(disable: 4100) //Unreferenced formal parameter
#pragma warning(disable: 4244) //Conversion, possible loss of data
#pragma warning(disable: 4512) //Assignment operator could not be generated
#pragma warning(disable: 4127) //Conditional expression is constant
#pragma warning(disable: 4505) //Unreferenced local function has been removed
#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
#include <cryptopp/md5.h>
#include <cryptopp/sha.h>
#pragma warning(pop)

Despite disable: 4505, I still get this warning:

c:\cppdev\cryptopp561\cryptopp\misc.h(548): warning C4505: 'CryptoPP::StringNarrow' : unreferenced local function has been removed

and my project does not build.

How can I work around this? Basically, I'd just like to disable the warning for third party code; I don't want to be editing cryptopp itself to fix the error if I can avoid doing so.

like image 301
Billy ONeal Avatar asked Nov 12 '11 21:11

Billy ONeal


1 Answers

If you just need a few hashing functions, create a separate source file with 4505 disabled to include the crapto headers and write your own header file to define the function prototypes you use.

like image 194
Jim Rhodes Avatar answered Oct 02 '22 14:10

Jim Rhodes