我的Windows应用程序包含C#部分和C ++部分。C#应用程序在运行时会显示一个控制台窗口。
C ++代码被编译成一个DLL,可通过P / Invoke从C#使用。
问题是通过std :: cout从C ++ DLL打印文本不会打印任何内容。从C#打印效果很好。
我怀疑C#接管了控制台,因此C ++无法使用它。解决方法可能是从C#获取控制台句柄,将其传递给C ++,然后使用其将std :: cout连接到控制台窗口。但是我不知道该怎么做。
有任何想法吗?
编辑:我的C ++代码不受管理。
伪代码:
void draw()
{
Vertex* vertices = scene.GetVertexArray();
glEnableClientState(...);
glVertexPointer(..., vertices);
glDrawArrays(...);
glDisableClientState(...);
delete vertices;
}
Run Code Online (Sandbox Code Playgroud)
我不使用VBO,因为我想支持较旧的OpenGL实现.
在调用glDrawArrays之后,我想:
delete vertices;")但是,GL可以自由地异步执行glDrawArrays,并且在完成之前解除分配或修改我的数组是不安全的.
我可以做一个glFinish来确保,但它会减慢应用程序的速度.
那么在什么时候我可以自由地解除分配/修改我的顶点数组?