使用VS2008托管C++来封装dll。本地方法采用一系列单个const char *值和一组char *值。要做出表率作用:将字符串^和字符串^集合转换为常量字符*
Function1(char * value1, TF_StringList& catList);
TF_StringList是一个DLL类3种插入方法,一个我想使用的是:
TF_StringList::insert(const char* str);
所以我成立了一个包装方法:
WrapperClass::callFunction(String^ mvalue1, ArrayList mcatList);
mvalue1使用转换为const char *:
const char* value1 = (char*)(Marshal::StringToHGlobalAnsi(mvalue1)).ToPointer();
然而,当到达字符串的集合,我遍历它使用索引获取每个字符串:
String^ mstr = mcatList[i];
试过将字符串转换^为const char *和在任何情况下,TF_StringList每路: :insert(const char * str)方法抛出一个C2663错误,它与值的常量有关。 问题是什么?
鉴于错误是在非const函数调用insert(const char * str)上抛出的,它所抱怨的“this”指针是str。我的问题是如何从ArrayList中得到字符串作为插入函数正在查找的“const char *”? 我完全知道char *指针需要清理,但只需要清理已经成功创建的内容。现在我在创建事物时遇到问题。 我的研究表明,您发布的链接仅涵盖了C2663的一个原因。 – 2010-05-03 18:07:28
“this”指针不是str。我建议你发布真正的代码,可以重新编译这个编译错误。 – 2010-05-03 20:10:46
如果您是道歉的话,它所抱怨的这个指针是TF_StringList的实例指针,我声明为const,实例化并试图通过insert方法添加字符串。删除了const修饰符,它工作正常。谢谢 – 2010-05-04 10:58:11