c++中的原函数是:
TootleResult TOOTLE_DLL TootleOptimizeVCache( const unsigned int* pnIB, unsigned int nFaces, unsigned int nVertices, unsigned int nCacheSize, unsigned int* pnIBOut, unsigned int* pnFaceRemapOut,TootleVCacheOptimizer eVCacheOptimizer);我用cli写的wrapper:
static TootleResult OptimizeVCache(array<int>^ input,unsigned int faceCount,unsigned int vertexCount, unsigned int cacheSize,array<int>^ output,TootleVCacheOptimizer optimizeFlag)
{
pin_ptr<int> ppInput = &input[0];
pin_ptr<int> ppOutput = &output[0];
unsigned int* pInput= (unsigned int*)ppInput;
unsigned int* pOutput = (unsigned int*)ppOutput; return TootleOptimizeVCache(pInput,faceCount,vertexCount,cacheSize,pOutput,nullptr,optimizeFlag); //这里抛出异常
}这个函数的作用是输入一组int值,通过特定算法排序之后输出
现在的问题是当输入数组长度超过3千万左右时,就会抛出AccessViolationException异常,其他情况下一切正常。弄了一下午,实在无解,请熟悉互操作高手指点....
TootleResult TOOTLE_DLL TootleOptimizeVCache( const unsigned int* pnIB, unsigned int nFaces, unsigned int nVertices, unsigned int nCacheSize, unsigned int* pnIBOut, unsigned int* pnFaceRemapOut,TootleVCacheOptimizer eVCacheOptimizer);我用cli写的wrapper:
static TootleResult OptimizeVCache(array<int>^ input,unsigned int faceCount,unsigned int vertexCount, unsigned int cacheSize,array<int>^ output,TootleVCacheOptimizer optimizeFlag)
{
pin_ptr<int> ppInput = &input[0];
pin_ptr<int> ppOutput = &output[0];
unsigned int* pInput= (unsigned int*)ppInput;
unsigned int* pOutput = (unsigned int*)ppOutput; return TootleOptimizeVCache(pInput,faceCount,vertexCount,cacheSize,pOutput,nullptr,optimizeFlag); //这里抛出异常
}这个函数的作用是输入一组int值,通过特定算法排序之后输出
现在的问题是当输入数组长度超过3千万左右时,就会抛出AccessViolationException异常,其他情况下一切正常。弄了一下午,实在无解,请熟悉互操作高手指点....
解决方案 »
- 安装VS2008中文专业版,怎么属性状态说明变为英文的了
- XML修改老是报错.正由另一进程使用,因此该进程无法访问该文件。
- 如何获取CheckedListBox中项的值?
- 怎样得到二维数组的一维数据
- 新手问题3谢谢大家
- 续刚才“打卡”的贴子:如果用ip来判断客户端为允许访问的ip的话,客户端每次重新拨号后ip地址就会发生变化,怎么办呢
- C#文件流问题
- 请问各位大虾,我在VS2005中使用水晶报表出现如下的问题如何解决?
- 如何根据背景色来获取的多个文本框内容
- C# 请问,麦克风音量大小控制代码应该怎么写?
- c#执行SQL查询语句的问题
- C#里,怎么实时的可以将Application.OpenForms.Count的窗体总数实时的判断他是否改变了。或是即时判断,实时判断太耗资源了。内详
现在得到的是.net异常,我怀疑是封送的时候出现的错误,不过不太确定
我又试了一下,如果直接在vs里F5启动,当数组大小超过1800*1800左右的时候就会出现异常
如果ctrl+F5,则要到2200*2200左右才会出现异常是不是.net互操作时对数据大小有限制?