0

我正在尝试将示例(.exe)从 Rob Farber(链接)转换为 DLL,以便可以从 LABView 调用它。

在示例中称为glutInit(&argc, argv).

是否可以glutInit(&argc, argv)用可以放在 DLL 中的东西替换?

或者可以是手动设置的值argcargv

4

2 回答 2

1

argc 是传递给您的可执行文件的参数数量,argv 包含实际参数。第一个值只是整数,第二个值是char**. 因此,如果您不需要将任何特定于 glut 的程序参数传递给您的应用程序 pass argc = 0,则 argv 应该是 achar**并且它的内容是什么并不重要。如果您需要将特定于 glut 的参数传递给 glutInit,只需创建一个char**包含它们的(将参数从索引 1 而非 0 放置)并将 argc 设置为您传递的参数数量。

于 2012-05-23T11:48:54.663 回答
1

我正在尝试将示例(.exe)从 Rob Farber(链接)转换为 DLL,以便可以从 LABView 调用它

如果您想在 LabVIEW 的上下文中执行某些操作,那么 GLUT 绝对是不行的!LabVIEW 有自己的事件循环和管理。GLUT 的 MainLoop 会与 LabVIEW 的内部严重冲突。

我已经编写了相当多的 LabVIEW 模块,坦率地说,我不知道如何创建适当的 OpenGL 上下文以集成到 LabVIEW 的一个窗口中,甚至不用谈论仪器。

想一想,我可能会产生一个独立运行的线程,拥有自己的窗口和事件处理,并在 LabVIEW 端和本地端之间建立某种通信通道。此外,我会确保从线程本地存储 (TLS) 分配独立线程一侧的所有内容,因为我发现 LabVIEW 自己的内存管理不太热衷于与其他库的内存分配合作。(您会在我的接口 VI 中找到我的标准模式之一,即我以 LabVIEW 数组的形式将内存传递给我的模块,以进行处理,而我的模块不会自行分配任何东西。)

于 2012-05-23T12:25:00.843 回答