2011-02-17 20 views
3

我在OpenCL嘗試一下,爲了把它放到生產環境中,我希望能夠動態綁定到OpenCL.DLL(當在Windows ),以便在主機上沒有安裝OpenCL的情況下處理'優雅'。OpenCL C/C++動態綁定庫(win32以及更多)

是否有任何可用的庫(或代碼片段)在C或C++中處理此動態綁定,就像GLEW爲OpenGL做的一樣?我想避免麻煩來自己做。

感謝,

回答

3
+1

感謝您的鏈接,我試了一下,它看起來大多好。我被一個沉默的錯誤咬了一口氣:由於我的項目是用Unicode字符集建立的,所以在調用`LoadLibraryW`函數時,給`clewInit`的模塊名的`const char *`默默地轉換爲`LPCWSTR`。 LoadLibrary調用然後失敗,沒有看起來很好的原因。花了一些時間來弄清楚。 – rotoglup 2011-02-17 16:59:31

0

既然你正在處理的Win32,最簡單的解決方法是延遲加載。如果延遲加載OpenCL,並且編譯器添加的存根無法找到它,它將調用__pfnDliFailureHook2(dliFailLoadLib)。你可以在那裏處理錯誤;如果你不提供處理程序,你會得到默認行爲(程序中止)。無論哪種情況,程序都不會對OpenCL產生靜態依賴。

+0

感謝您的建議。動態綁定更加靈活,只允許綁定可用的入口點(在支持多個版本添加/刪除功能的情況下,請參閱OpenGL);會延遲加載OpenCL允許處理這種情況? – rotoglup 2011-02-17 16:55:55