我想从我的unicode构建的MFC应用程序中使用非unicode库。但是,我不确定是否有可能发生事件,例如意外的内存分配,非unicode库中的字符串处理。
请解释任何影响或提供资源页面。
答案 0 :(得分:2)
应用程序是否是Unicode是编译时,而不是运行时的区别 - Unicode可执行文件无法加载ANSI DLL的固有原因。如果应用程序和DLL都使用MFC,它们将链接到不同的MFC运行时,这可能会导致问题,但事实并非如此,你应该没问题。
您需要注意的是确保在DLL和应用程序之间传输的任何字符串数据都得到一致的解释。大多数情况下,这只是意味着在必要时在ANSI和Unicode之间进行转换,而Windows提供的API函数可以让您轻松地完成此操作。
但是,您应该检查头文件以查找在编译Unicode时比在编译ANSI时编译方式不同的任何数据类型。例如,如果其中一个DLL函数声明为DWORD process_string(TCHAR * string)
然后非unicode库会将TCHAR解释为char,但是你的应用程序会将其解释为wchar_t,隐藏了在调用函数之前需要将字符串转换为ANSI的事实。