我正在尝试将示例(.exe)从Rob Farber(link)转换为DLL,以便可以从LABView调用它。
在示例中称为glutInit(&argc, argv)
。
是否可以将glutInit(&argc, argv)
替换为可放置在DLL中的内容?
或者可以设置为argc
和argv
的值为manualy?
答案 0 :(得分:1)
Argc是传递给你的可执行文件的参数个数,argv包含实际的参数。第一个值只是整数,第二个值是char**
。因此,如果您不需要将任何特定于过剩的程序参数传递给您的应用程序传递argc = 0,则argv应该是char**
并且它的内容无关紧要。如果你需要将glut特定参数传递给你的glutInit,只需创建一个包含它们的char**
(从索引1放置参数而不是从0开始),并将argc设置为你传递的参数数量。
答案 1 :(得分:1)
我正在尝试将示例(.exe)从Rob Farber(链接)转换为DLL,以便可以从LABView调用
如果你想在LabVIEW的上下文中执行某些东西,那么GLUT绝对是NoGo! LabVIEW完成自己的事件循环和管理。 GLUT的MainLoop与LabVIEW的内部结构严重冲突。
我已经写好了我的LabVIEW模块,坦白说,我不知道,我是如何创建一个合适的OpenGL上下文集成到LabVIEW的一个窗口中,甚至不谈论仪器
考虑到这一点,我可能会生成一个独立运行的线程,它有自己的窗口和事件处理,并在LabVIEW端和本地端之间建立某种通信通道。另外,我确保从线程本地存储(TLS)中分配独立线程端的所有内容,因为我发现LabVIEW自己的内存管理并不热衷于与其他库的内存分配合作。 (我在接口VI中找到的标准模式之一是,我将LabVIEW阵列形式的存储器传递给我的模块,以便对其进行处理,我的模块不会自行分配任何东西。)< / p>