Seems to me as a classic problem of passing std
types (in this case std::string
) across DLL boundaries.
As a best practice, pass only "native" data types across DLL boundaries, I'm sure in 99% that if you change your prototype from
typedef void (CALLBACK * fnCallBackFunc)(std::string value);
to
typedef void (CALLBACK * fnCallBackFunc)(const char* value);
Your code will work regardless of your underlying runtime