【问题标题】:COM: how to choose the compile option?COM:如何选择编译选项?
【发布时间】:2011-04-14 07:43:03
【问题描述】:

在VS2008 ide中,我写了一个包装器将VC dll(vc.dll)封装成一个Com(com.dll),而vc.dll会被c.exe调用

问题#1: 我发现 vc.dll 的编译选项是 Char Set:Not Set 我的问题是,我应该使用哪个字符集来编译 com 项目?

问题#2: 如果我们将 com 项目的 Char 集也设置为 Not Set,那么我应该如何处理函数接口中的字符串?因为有很多字符串类型,比如 TCHAR 和 BSTR 和 _bstr_t 哪一个更适合我的 Com 项目?

问题#3: 我应该如何为 C 项目(C.exe)设置字符集?

【问题讨论】:

    标签: com


    【解决方案1】:

    避免将字符集设置为 Unicode 的理由为零。在过去的 17 年里,Windows 一直是原生 Unicode 操作系统。 COM 自动化只能处理 Unicode 字符串。这实际上并不重要,因为您应该在 COM 代码中使用 BSTR,它不受该设置的影响。

    始终在接口声明中使用 BSTR。 _bstr_t 类确实是 BSTR 周围的一个方便的包装类,可以轻松操作这些字符串。 TCHAR 是过时的,与 COM 自动化不兼容。

    客户端应用程序也是如此。该设置无关紧要,因为您强制客户端将 BSTR 与您的接口声明一起使用。但是在该应用程序的其余代码中不使用 Unicode 是过时的。当 Unicode 字符串包含无法转换为系统代码页的字符时,您必须编写将 BSTR 转换为 const char* 并返回的代码只是浪费您的时间和潜在的损失源。所有主流 COM 客户端(Java、.NET、Javascript 和其他脚本语言)都使用 Unicode。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多