對於我正在嘗試編寫的應用程序,我需要能夠在interface
中寫入GLEnable(GL_REPEAT)
(得到這個工作)。一旦用戶這樣做,系統應該用正確的參數調用該函數。帶參數的Void *函數
對於這一點,我使用以下變量來獲得正確的功能:
std::map<std::string, void(*)(GLenum)> glEnableDisable;
並通過存儲在它的數據:
glEnableDisable["glEnable"] = glEnable;
glEnableDisable["glDisable"] = glDisable;
(注意上面給出警告「'='不能從'void(__stdcall *)(GLenum)'轉換爲'void(__cdecl *)(GLenum)'」)
最後,調用函數通過:
((void (*)(GLenum)) Main.glEnableDisable[SplittedUp[0]])(Parameter);
現在,我不知道我做錯了。我有這個沒有參數工作正常,但我真的需要這個參數。
由於提前,
喬伊
這是從來沒有真正的「工作正常」不帶參數。你很幸運,你沒有因爲使用錯誤的調用約定而崩潰('__stdcall'與'__cedcl') – PaulMcKenzie
__stdcall來自Visual Studio給出的警告。它不是我的代碼的一部分(我試圖從OpenGL調用glEnable函數) –
忽略警告給自己的危險。你應該問自己(或者stackoverflow)什麼是__stdcall什麼是__cdecl,爲什麼VS會警告我甚至不在我的代碼中的東西?甚至在嘗試運行任何東西之前。 –