2

我想使用我的 unicode 构建的 MFC 应用程序中的非 unicode 库。但是,我不确定是否有可能发生意外的内存分配、非 unicode 库中的字符串处理等事件。

请解释任何影响或提供资源页面。

4

1 回答 1

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 的事实。

于 2012-04-23T07:04:59.800 回答