ich versuche seit einer Weile eine QT Anwendung zu bauen, die mit OpenCL zusammenarbeitet.
Grundsätzlich ist das kein Problem, wenn da nicht das folgende Problem wäre:
(a) Starte ich eine Deploy Version mit verlinkter OpenCL.dll der Anwendung auf einem Rechner der die OpenCL.dll verfügbar hat, ist alles in Ordnung
(b) Verlinke ich die OpenCL.dll nicht und nutze statt dessen QLibrary mit .resolve bekomme ich auf 32-Bit Windows Systemen bei einer x86 Version falsche Werte aus der .dll geliefert
Code: Alles auswählen
typedef cl_int (*CLGetPlatformIDs)(cl_uint, cl_platform_id*, cl_uint*);
CLGetPlatformIDs clGetPlatformIDs;
m_OpenCL_Dll.setFileName("OpenCL");
if (m_OpenCL_Dll.load())
{
clGetPlatformIDs = (CLGetPlatformIDs)m_OpenCL_Dll.resolve("clGetPlatformIDs");
CHECK_FUNC_PTR(clGetPlatformIDs, "clGetPlatformIDs");
cl_uint num_platforms;
err = clGetPlatformIDs(0, NULL, &num_platforms);
//num_platforms erhält unter 32-Bit Werte wie 5732531?!?
}
Wie bekommt man es hin, dass entweder
- mit QLibrary.resolve unter 32-Bit Win mit einer x86 Anwendung die richtigen Werte zurückkommen (Fall (b))
- oder (Fall (c)) die fehlende Library nicht zum Abbruch der Anwendung führen
Hat irgendjemand eine gute Idee?
Danke Euch!