【问题标题】:Convert from BSTR to char*从 BSTR 转换为 char*
【发布时间】:2014-04-10 11:08:18
【问题描述】:

我见过:

  1. Convert BSTR to CHAR* and CHAR* to BSTR in C
  2. Problems converting BSTR to char *
  3. Convert BSTR to char*

使用这些问题,我试图通过

BSTR 转换为 char*
#include "comutil.h"
STDMETHODIMP CServer::Initialise(BSTR strCmdFilePath, 
   VARIANT_BOOL bDiagErr, VARIANT_BOOL bProcErr, BSTR* RESULT)
{
   char *p = _com_util::ConvertBSTRToString(strCmdFilePath);
   ...
}

但我得到了:

错误 1 ​​错误 LNK2019:无法解析的外部符号“char * __stdcall _com_util::ConvertBSTRToString(wchar_t *)”(?ConvertBSTRToString@_com_util@@YGPADPA_W@Z) 在函数“public: virtual long __stdcall CServer::Initialise(wchar_t) *,short,short,wchar_t * *)" (?Initialise@CServer@@UAGJPA_WFFPAPA_W@Z)

为什么会出现这个错误?

【问题讨论】:

  • 查看answer
  • 我也看到了这个答案。这并不能解释为什么我会收到上述错误...
  • 您似乎没有链接 com 支持库,并且根据您正在构建的 Visual Studio 版本(您应该在问题中包含该版本),您可能会遇到错误用于拉入正确库的 pragma cmets。如果是这样,它是可以纠正的,但首先:出于好奇,调试 发布版本是否会出现同样的问题?
  • Working VS2013 是的,发布版本和调试版本也会出现这种情况。
  • 好的,最后,您是否使用 wchar_t 作为本机类型进行构建?我问是因为我遇到了类似的问题。 This may help.

标签: c++ com type-conversion


【解决方案1】:

您的项目未链接所需的库。发布版本为comsuppw.lib,调试版本为comsuppwd.lib。请注意,您始终可以在 the MSDN article 中看到所需的库。文章底部有注释。 “Header”告诉你需要#include 什么,“Lib”告诉你需要链接什么。

这个库有一个更简单的方法,嵌入链接器指令的最佳方法是自动嵌入链接器指令,即#include 包含#pragma 注释的.h 文件。修复:

#include <comdef.h>     // Added
#include <comutil.h>

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 2010-10-11
    • 2013-01-04
    • 2011-05-17
    • 2011-04-24
    • 2011-08-09
    • 2010-09-15
    • 2013-05-12
    • 1970-01-01
    相关资源
    最近更新 更多