linux 动态库 无符号,在Win DLL中将LPBYTE更改为无符号字符*后的C++编译器错误至Linux SO转换...

我正在将Windows DLL转换为Linux SO。我已将所有类型BYTE转换为unsigned char和LPBYTE为unsigned char *。在Win DLL中将LPBYTE更改为无符号字符*后的C++编译器错误至Linux SO转换

编译器是给我在一个功能错误如下:

Error: Invalid Conversion from 'char*' to 'unsigned char'

Error: Invalid Conversion from 'unsigned char' to 'unsigned char*' 在这两行

具体来说:

if (DataLineIndexOverlap){

OverlapSize = m_NrofDataLines*m_PosPerSector*m_PosPerSector;

MirrorDataLineIndexOverlap = new unsigned char[OverlapSize];

}

OverlapSize被定义为int和MirrorDataLineIndexOverlap是在原来的LPBYTE Windows代码,现在是一个无符号字符*,新的无符号字符[OverlapSize]是原始Windows代码中的新BYTE [OverlapSize]。之后还有其他错误,它们都与MirrorDataLineIndexOverlap有关,所以我假定最初的无效转换错误是根本原因。

我正在寻找最干净的方法来解决这个编译器错误和其他没有打破代码的其余部分的错误。 Linux C++中的LPBYTE是否有一个干净的替代品,可以在没有我看到的错误的情况下进行编译?

全功能低于:

int CABC_DecodeCode::MirrorCheck(unsigned char* DataLineIndex, bool bThickLines, unsigned char* DataLineIndexOverlap, double *pSecondBestOverlapSum, unsigned int *pResultFlags)

{

int i, OverlapSize, NoMirrorDataLineSum, MirrorDataLineSum;

unsigned char* MirrorDataLineIndex, MirrorDataLineIndexOverlap;

double *pNoMirrorSecondBestOverlapSum, *pMirrorSecondBestOverlapSum;

MirrorDataLineIndex = NULL;

MirrorDataLineIndexOverlap = NULL;

NoMirrorDataLineSum = 0;

MirrorDataLineSum = 0;

if (pSecondBestOverlapSum)

{

pNoMirrorSecondBestOverlapSum = new double;

pMirrorSecondBestOverlapSum = new double;

*pNoMirrorSecondBestOverlapSum = 0.0;

*pMirrorSecondBestOverlapSum = 0.0;

}

// normal decode

for (i=0; i

DataLineIndex[i] = GetDataLineIndex(i, bThickLines, DataLineIndexOverlap, pNoMirrorSecondBestOverlapSum, &NoMirrorDataLineSum);

FlipCode();

// flipped image decode

MirrorDataLineIndex = new unsigned char[m_NrofDataLines];

if (DataLineIndexOverlap)

{

OverlapSize = m_NrofDataLines*m_PosPerSector*m_PosPerSector;

MirrorDataLineIndexOverlap = new unsigned char[OverlapSize];

}

for (i=0; i

MirrorDataLineIndex[i] = GetDataLineIndex(i, bThickLines, MirrorDataLineIndexOverlap, pMirrorSecondBestOverlapSum, &MirrorDataLineSum);

if (MirrorDataLineSum < NoMirrorDataLineSum)

{

if (pResultFlags)

*pResultFlags |= RF_MIRRORRED_CODE;

memcpy(DataLineIndex, MirrorDataLineIndex, m_NrofDataLines);

if (DataLineIndexOverlap)

memcpy(DataLineIndexOverlap, MirrorDataLineIndexOverlap, OverlapSize);

if (pSecondBestOverlapSum)

*pSecondBestOverlapSum = *pMirrorSecondBestOverlapSum;

}

else

{

FlipCode();

if (pResultFlags)

*pResultFlags &= ~RF_MIRRORRED_CODE;

if (pSecondBestOverlapSum)

*pSecondBestOverlapSum = *pNoMirrorSecondBestOverlapSum;

}

delete [] MirrorDataLineIndex;

if (MirrorDataLineIndexOverlap)

delete [] MirrorDataLineIndexOverlap;

if (pMirrorSecondBestOverlapSum)

delete pMirrorSecondBestOverlapSum;

if (pNoMirrorSecondBestOverlapSum)

delete pNoMirrorSecondBestOverlapSum;

return 1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值