所以我有一大堆Code,它是一个未来统一资产库的插件。该库使用一组三维点填充四面体网格。我从Unity传递分数,一切正常,矢量显然已填满,或者说我的日志文本文件...在写入之后,在我尝试调用四边形方法之前,我检查向量是否为空并且它转它是空的。我不明白。
我从未使用dll通信,所以我有点迷失。 谢谢你的时间。
以下是代码:
extern "C"{
const int deviceIdx = 0;
const int seed = 123456789;
const int pointNum = 15000;
const Distribution dist = UniformDistribution;
Point3HVec pointVec;
GDelOutput output;
EXPORT_API void makeInputFromMeshCoords(float x[] , float y[], float z[],int sizeOfArrays){
CudaSafeCall( cudaSetDevice( deviceIdx ) );
CudaSafeCall( cudaDeviceReset() );
std::ofstream StatisticsFile;
StatisticsFile.open ("E:/documentos/Videojuegos/Cuarto_curso/TFG/SimplestPluginExample/Unity Project Plugin/Assets/Logs/CoordinatesUnity.txt");
for(int i =0; i<sizeOfArrays;i++)
{
Point3 point = {x[i],y[i],z[i]};
pointVec.push_back(point);
StatisticsFile <<"("<<pointVec[i]._p[0]<<","<<pointVec[i]._p[1]<<","<<pointVec[i]._p[2]<<")"<< std::endl;
StatisticsFile<<pointVec.size()<<std::endl;
}
StatisticsFile<<"END OF LOOP; SIZE: "<<pointVec.size()<<"Empty " << (pointVec.empty()?"it is":"it is not")<<std::endl;
StatisticsFile.close();
assert(pointVec.empty());
GpuDel triangulator;
triangulator.compute( pointVec, &output );
}
}
以下是库类型定义:
typedef thrust::host_vector< Point3 > Point3HVec;
答案 0 :(得分:3)
assert
的参数是一个在正确操作下断言为真的表达式。你断言向量是空的,它失败了,因为它实际上是填充的。移除assert
或将其更改为assert(!pointVec.empty());
。