我試圖從Rob Farber(link)將示例(.exe)轉換爲DLL,因此可以從LABView中調用它。是否可以取代glutInit(&argc,argv)?
在示例中稱爲glutInit(&argc, argv)
。
是否可以將glutInit(&argc, argv)
替換爲可放入DLL的東西?
或者可以將argc
和argv
的值設爲manualy?
我試圖從Rob Farber(link)將示例(.exe)轉換爲DLL,因此可以從LABView中調用它。是否可以取代glutInit(&argc,argv)?
在示例中稱爲glutInit(&argc, argv)
。
是否可以將glutInit(&argc, argv)
替換爲可放入DLL的東西?
或者可以將argc
和argv
的值設爲manualy?
Argc是傳遞給你的可執行文件的參數個數,argv包含實際參數。第一個值是簡單的整數,第二個值是char**
。因此,如果您不需要將任何特定於程序的程序參數傳遞給您的應用程序傳遞argc = 0,則argv應該是char**
,並且它的內容無關緊要。如果您需要將glut特定的參數傳遞給您的glutInit,只需創建一個包含它們的char**
(將索引1的參數放在0之外),並將argc設置爲您傳遞的參數數量。
感謝您的回覆:) – user1281071
我想例如文件(.exe)的羅布法伯(鏈接)轉換爲DLL,以便它可以在LabVIEW
如果你想在LabVIEW中的上下文中執行的東西被調用,然後轉運蛋白是絕對不會! LabVIEW執行自己的事件循環和管理。 GLUT的MainLoop會嚴重衝突LabVIEW的內部。我已經寫下了我公平分享的LabVIEW模塊,坦率地說,我不知道該如何創建一個合適的OpenGL上下文來集成到LabVIEW的某個窗口中,甚至不會說話關於儀器。我想可能會產生一個獨立運行的線程,它有自己的窗口和事件處理,並在LabVIEW端和本地端之間建立某種通信通道。另外,我還要確保從線程本地存儲(TLS)的獨立線程一側分配所有內容,因爲我發現LabVIEW自己的內存管理不太喜歡與其他庫的內存分配配合。 (我在接口VI中發現的一種標準模式是,我將內存以LabVIEW數組的形式傳遞給我的模塊,進行處理,而我的模塊不會自行分配任何東西。)
感謝您的回覆和時間。這個例子結合了CUDA和OpenGL。 OpenGL/GLUT創建自己的窗口。我不想在LABView窗口中顯示圖像。我設法設置LABView從一個線程調用所有DLL(這是CUDA的要求)。我甚至設法從LABView成功運行這些DLL。問題是當我停止LABView程序並嘗試再次運行整個LABView崩潰時。我認爲'glutInit(&argc,argv)'中的參數會導致問題,但我不再確定。 – user1281071
@ user1281071:這聽起來像我提到的那些內存分配問題之一。你不必使用GLUT BTW。從你的問題描述中,我認爲使用PBuffer可以做到這一點。你可以讓每個進程單獨執行一次DLL(這是因爲我最後一次做了這麼多年,所以我現在不能告訴你如何完成),所以只需要一次創建上下文,然後只在VI重新啓動。 \ *嘆氣\ * ...我討厭LabVIEW。 – datenwolf
你是否將任何參數傳遞給它,或者根本沒有? – Bart
我已經聲明瞭'int argc'和'char ** argv',並且除此之外別無其他。 – user1281071