我想使用我的 unicode 构建的 MFC 应用程序中的非 unicode 库。但是,我不确定是否有可能发生意外的内存分配、非 unicode 库内的字符串处理等事件。
请解释任何影响或提供资源页面。
最佳答案
应用程序是否是 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 的事实。
关于windows - 将非 unicode 库与 unicode 构建的应用程序一起使用的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10241540/