Question

I recently started writing a C++/CLI wrapper for a native c++ library. I'm now getting this compile warning

"warning LNK4249: directive '/CLRTHREADATTRIBUTE:STA' conflicts with command line; ignored"

My c++/cli wrapper is set up for MTA in the linker's command line arguments, but I have no idea what file or project is trying to give the STA directive.

I did enough reading to get worried about .NET forcing libraries to become multi-threaded. I've read that this mostly affects my application's use of COM, but I am not really sure if or where my DLL uses COM. I use the interop services to marshal string data and am using 'msclr\auto_gcroot.h' to point to managed classes from unmanaged ones. In the native c++ library that is being wrapped, I include the following headers:

#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxmt.h>
#include "Winsock2.h."
#include <time.h>

Does anybody have any advice that could help me avoid painful experiences in the future, or should I just not worry about it?

Was it helpful?

Solution

So far so good. I haven't seen any real problems with this; I think it is just because MFC is a single threaded library, so it wants to compile that way. So, for my case, I think as long as I treat all MFC objects and such as not thread-safe I'll be okay.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top