gpt4 book ai didi

c++ - 无法将参数 1 从 "unsigned int *"转换为 "size t *"

转载 作者:行者123 更新时间:2023-11-28 00:14:34 26 4
gpt4 key购买 nike

我正在从事学生项目并从站点获取 SDK 并在 Visual Studio 上构建库。一旦我使用 cmake 在 VS 中打开解决方案构建库并在 VS 中构建,就会出现上述错误。不确定如何修复它。

这是我出错的过程。

pmdDllExport int pmdpGetSourceDataDescription (unsigned hnd, PMDDataDescription *result)
{
if (!idOk (hnd))
{
globalErrorMessage = "unknown handle";
return PMD_UNKNOWN_HANDLE;
}

SrcPluginData *dat = g_data[hnd];

int c_channels = 1;
//
dat->currentDD.type = PMD_USER_DEFINED_0; /* USER DEFINE TYPE DATA for O3D3xx data*/
dat->currentDD.subHeaderType = PMD_IMAGE_DATA;
dat->currentDD.img.numSubImages = 6;/* Mentions number of images in image data
buffer. We have six images*/

...

/* Get Size of image data buffer */
**dat->o3d3xxCamera->getFrameDataSize (& (dat->currentDD.size));**

dat->currentDD.PID = hnd;
dat->currentDD.DID = g_did;

/*Output this descriptor to calling function */
memcpy (result , &dat->currentDD, sizeof (PMDDataDescription));

return PMD_OK;
}

当我检查什么是 o3d3xxCamera->getFrameDataSize 定义时,它被定义为

int32_t getFrameDataSize (size_t *dataSize);

我看了很多查询,他们说最好将变量作为 size_t 类型传递,当我检查什么是 dat->currentdd 它的结构时。所以我不确定如何将此类型更改为 size_t

/**<local datadescriptor of the current data */
PMDDataDescription currentDD;

struct PMDDataDescription
{
unsigned PID;
unsigned DID;
unsigned type;
unsigned size;

unsigned subHeaderType;
...

最佳答案

不要只是reintepret_cast 指针!这不会满足您的要求,除非 size_t 恰好与 unsigned int 相同,这因平台而异。

相反,您需要使用临时文件,并在完成后复制回来:

size_t size = dat->currentDD.size;   // this will promote as necessary
dat->o3d3xxCamera->getFrameDataSize(&size);
dat->currentDD.size = size; // write it back

如果 sizeof (size_t)sizeof (unsigned int) 不同,其中一项或多项赋值可能需要 static_cast。这很好,因为它将保留值(假设该值在两种类型中都是可表示的)。

关于c++ - 无法将参数 1 从 "unsigned int *"转换为 "size t *",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com