Problem with cooking TriangleMesh PhysX 3.2

Hi! I using a PhysX 3.2 and Visual Studio 2010. I have a problem with with loading and cooking triangle mesh from STL file.
The STL file looks like

facet normal ni nj nk
outer loop
vertex v1x v1y v1z
vertex v2x v2y v2z
vertex v3x v3y v3z
endloop
endfacet

So far I got vector of vertexes (PxVec3). Now I’m trying to set up a mesh descriptor. The problem is that I don’t how to set up meshDesc properly. The program creates file called “TriMeshCooked.bin” but the file is empty (0 bytes). Maybe I have to create some vector of (PxU32) indices and pass it to MeshDesc ? But my question is how to create it? Is there any algorythm?

here is part of code from PhysX 3.2 SDK Guide

PxTriangleMeshDesc meshDesc;
meshDesc.points.count = nbVerts;
meshDesc.points.stride = sizeof(PxVec3);
meshDesc.points.data = verts;

meshDesc.triangles.count = triCount;
meshDesc.triangles.stride = 3*sizeof(PxU32);
meshDesc.triangles.data = indices32;

PxToolkit::MemoryOutputStream writeBuffer;
bool status = cooking.cookTriangleMesh(meshDesc, writeBuffer);
if(!status)
return NULL;

PxToolkit::MemoryInputData readBuffer(writeBuffer.getData(), writeBuffer.getSize());
return physics.createTriangleMesh(readBuffer);

And my code.

//Part of initialization code of PhysX

//Here libs I added

#pragma comment(lib, "PhysX3_x86.lib")
#pragma comment(lib, "PhysX3Common_x86.lib") 
#pragma comment(lib, "PhysXProfileSDK.lib")
#pragma comment(lib, "PhysX3Extensions.lib")
#pragma comment(lib, "PhysX3Cooking_x86.lib")
#pragma comment(lib, "PhysXVisualDebuggerSDK")
#pragma comment(lib, "PxTask.lib")
#pragma comment(lib, "RepX3.lib")
#pragma comment(lib, "PxToolkitDEBUG.lib")

#pragma comment(lib, "PhysX3CHECKED_x86.lib")
#pragma comment(lib, "PhysX3ExtensionsCHECKED.lib")
#pragma comment(lib, "PhysXVisualDebuggerSDKCHECKED.lib")

mfoundation = PxCreateFoundation(PX_PHYSICS_VERSION, gDefaultAllocatorCallback, gDefaultErrorCallback);
			if(!mfoundation)
			cerr<<"PxCreateFoundation failed!";

	bool recordMemoryAllocations = true;
	mProfileZoneManager = &PxProfileZoneManager::createProfileZoneManager(mfoundation);
	if(!mProfileZoneManager)
	   cerr<<"PxProfileZoneManager::createProfileZoneManager failed!"<<endl;

	gPhysicsSDK = PxCreatePhysics(PX_PHYSICS_VERSION, *mfoundation,
            PxTolerancesScale(), recordMemoryAllocations, mProfileZoneManager );
	if(gPhysicsSDK == NULL) {
		cerr<<"Error creating PhysX3 device."<<endl;
		cerr<<"Exiting..."<<endl;
		exit(1);
	}
[...]

vector <PxVec3> pxTriNormal; 
	vector <PxVec3> pxTriVertex;
	vector <PxU32> pxIndices; // ??
	PxTriangleMeshDesc meshDesc; 

	meshDesc.points.count = pxTriVertex.size(); // number of Vertexes
	meshDesc.points.stride = sizeof(PxVec3); 
	meshDesc.points.data = pxTriVertex.data(); // ??
	
	meshDesc.triangles.count = pxTriVertex.size()/3; // number of Triangles = Vertexes / 3
	meshDesc.triangles.stride = 3 * sizeof(PxVec3); // ??
	meshDesc.triangles.data = pxTriVertex.data(); // ??

PxToolkit::FileOutputStream stream("TriMeshCooked.bin"); 
	cout<<"stream.isValid(): " <<stream.isValid() <<endl;
	
PxCooking *mCooking = NULL;

	mCooking = PxCreateCooking(PX_PHYSICS_VERSION, *mfoundation, PxCookingParams());
		if (!ck)
			cout<< "PxCreateCooking failed!";

	bool status = mCooking->cookTriangleMesh(meshTriDesc,stream);

Hi these are my declarations:

#pragma comment(lib, "PhysX3CHECKED_x86.lib"					)
#pragma comment(lib, "PhysX3CommonCHECKED_x86.lib"				)
#pragma comment(lib, "PhysX3ExtensionsCHECKED.lib"				)
#pragma comment(lib, "PhysX3CharacterKinematicCHECKED_x86.lib"	)
#pragma comment(lib, "PhysX3CookingCHECKED_x86.lib"				)
#pragma comment(lib, "PhysXProfileSDKCHECKED.lib"				)
#pragma comment(lib, "PxTaskCHECKED.lib"						)
#pragma comment(lib, "RepX3CHECKED.lib"							)
#pragma comment(lib, "PxToolkitCHECKED.lib"						)
#pragma comment(lib, "PhysXVisualDebuggerSDKCHECKED.lib"		)

Hope it helps.

Where is the data getting loaded into pxTriVertex prior to cooking ?