【发布时间】:2011-01-26 20:57:27
【问题描述】:
在非托管 c++ dll 中,我有一个函数,它以常量 std::string 作为参数
Prototype : void read ( const std::string &imageSpec_ )
我通过传递 std::string 从托管 c++ dll 调用此函数。
当我调试非托管 c++ 代码时,参数imageSpec_ 正确显示了该值,但不允许我将该值复制到其他变量中。
imageSpec_.copy( sFilename, 4052 );
它将imageSpec_ 的长度显示为 0(零)。
如果我尝试像std::string sTempFileName(imageSpec_); 一样复制这个语句字符串,新字符串是一个空字符串。
但是对于std::string sTempFileName(imageSpec_.c_str());,这个语句字符串被正确复制。即正确复制带有字符指针的字符串。
以这种方式复制需要对非托管 c++ 代码进行重大更改。
我在 Visual Studio 6.0 中构建非托管代码,在 Visual Studio 2008 中构建托管 C++。
托管 c++ 中是否有任何特定设置或代码更改可以解决该问题?
【问题讨论】:
-
是“托管 C++”还是 C++/CLI?
-
您确定支持混合 VC++6.0 和 VC++ 2008 对象吗?