COM:如何选择编译选项?

时间:2010-09-19 12:11:26

标签: com

在VS2008 ide中,我编写了一个包装器来封装VC dll(vc.dll)为Com(com.dll),vc.dll将由c.exe调用

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

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

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

1 个答案:

答案 0 :(得分:0)

没有理由避免将字符集设置为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。