Today I had to define the WIN32_MEAN_AND_LEAN preprocessor macro in a native C++ project because I decided to use boost::asio in it, and without that macro, I get build errors.
Thing is, the error I get now is OleInitialize: identifier not found. According to the MSDN, this function is used to initialize a COM library. My project is not a COM library now, but my partners say it used to be.
In this case, would it be safe to remove the call? The project uses a mix of Win32 serial port functions and boost::asio (gradually, I’ll leave just boost::asio). My concern is that OleInitialize might be necessary for some Win32 calls.
This is all it is done with it:
HRESULT hOle = OleInitialize( 0 );
if( !SUCCEEDED( hOle ) )
throw "Could not initialize OLE";
The worst that will happen is COM methods may start failing, if you’re still calling some.
OleInitialize()callsCoInitialize()internally. Only those functions need this. The base Win32 functions (CreateWindow, CreateFile, etc) do not require this initialization.If you don’t call any COM methods (any of the
CoXXX()functions) and you don’t call any Ole methods (OleXXX()functions), then you should be fine if you remove it.You should do a quick search of your code base for COM / OLE functions and make sure you’re really not using those technologies anymore. Then you can make a build where you don’t do this and test it to see if it still works (you have a suite of test cases, right?).
Have a look at the Docs for other things that may break that you should check on.