将嵌套结构变量从C ++传递到C ++ dll会导致(L“缓冲区太小”&& 0)

时间:2012-08-01 06:48:00

标签: c++ dll

我有结构

NewStruct1
{
  uint factor;
  NewStruct2 assert[3];
  char name[21];

}

和另一个

NewStruct2 
{
  uint newFactor;
  char newName[21];
}

这里我在dll中调用函数'func',如下所示

NewStruct1 var;

func(&var);

功能是

func(NewStruct1 *v)
{
  std::string myName = "werttt";
  strcpy_s(v->assert[0].newName, myName.size(), myName.c_str());
}

这样做strcpy_s即使有足够的空间容纳(L"Buffer is too small" && 0)也是如此。任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:3)

strcpy_s的第二个参数必须是 destination 中的元素数,即21(newName中的字符数),而不是源的长度