2012-12-30 69 views
3

我遇到了一個奇怪的問題。無法找到程序入口點?

The procedure entry point __glewProgramUniform1i could not be located in the dynamic link library 

如果我改變,使我鏈接使用靜態鏈接到GLEW,那麼具體的錯誤消失,它反而會抱怨一些其他程序的入口點在其他一些:更新到最新的ffmpeg headers/lib/dll我不斷收到錯誤後DLL,等等。

只要恢復到舊的ffmpeg頭文件/ lib/dll,問題就會消失。

什麼可能導致此行爲?我該如何調試?

注意:這隻發生在發佈版本,而不是在調試版本。

enter image description here

enter image description here

取決於剖面測井:

Started "CONHOST.EXE" (process 0x1BBC) at address 0x000007F63CF60000. Successfully hooked module. 
Loaded "NTDLL.DLL" at address 0x000007F945C30000. Successfully hooked module. 
Loaded "KERNEL32.DLL" at address 0x000007F943400000. Successfully hooked module. 
Loaded "KERNELBASE.DLL" at address 0x000007F942D10000. Successfully hooked module. 
DllMain(0x000007F942D10000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "KERNELBASE.DLL" called. 
DllMain(0x000007F942D10000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "KERNELBASE.DLL" returned 1 (0x1). 
DllMain(0x000007F943400000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "KERNEL32.DLL" called. 
DllMain(0x000007F943400000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "KERNEL32.DLL" returned 1 (0x1). 
Injected "DEPENDS.DLL" at address 0x000000005ACD0000. 
DllMain(0x000000005ACD0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "DEPENDS.DLL" called. 
DllMain(0x000000005ACD0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "DEPENDS.DLL" returned 1 (0x1). 
Loaded "GDI32.DLL" at address 0x000007F945970000. Successfully hooked module. 
Loaded "USER32.DLL" at address 0x000007F943860000. Successfully hooked module. 
Loaded "MSVCRT.DLL" at address 0x000007F945430000. Successfully hooked module. 
Loaded "IMM32.DLL" at address 0x000007F945320000. Successfully hooked module. 
Loaded "OLEAUT32.DLL" at address 0x000007F9454E0000. Successfully hooked module. 
Loaded "COMBASE.DLL" at address 0x000007F9457C0000. Successfully hooked module. 
Loaded "MSCTF.DLL" at address 0x000007F944FD0000. Successfully hooked module. 
Loaded "RPCRT4.DLL" at address 0x000007F944CF0000. Successfully hooked module. 
Entrypoint reached. All implicit modules have been loaded. 
DllMain(0x000007F943860000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "USER32.DLL" called. 
DllMain(0x000007F945430000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "MSVCRT.DLL" called. 
DllMain(0x000007F945430000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "MSVCRT.DLL" returned 1 (0x1). 
DllMain(0x000007F943860000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "USER32.DLL" returned 1 (0x1). 
DllMain(0x000007F945970000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "GDI32.DLL" called. 
DllMain(0x000007F945970000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "GDI32.DLL" returned 1 (0x1). 
DllMain(0x000007F944FD0000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "MSCTF.DLL" called. 
DllMain(0x000007F944FD0000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "MSCTF.DLL" returned 1 (0x1). 
DllMain(0x000007F945320000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "IMM32.DLL" called. 
DllMain(0x000007F945320000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "IMM32.DLL" returned 1 (0x1). 
DllMain(0x000007F944CF0000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "RPCRT4.DLL" called. 
DllMain(0x000007F944CF0000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "RPCRT4.DLL" returned 1154577921 (0x44D17601). 
DllMain(0x000007F9457C0000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "COMBASE.DLL" called. 
DllMain(0x000007F9457C0000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "COMBASE.DLL" returned 1 (0x1). 
DllMain(0x000007F9454E0000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "OLEAUT32.DLL" called. 
DllMain(0x000007F9454E0000, DLL_PROCESS_ATTACH, 0x00000019CF36F8C0) in "OLEAUT32.DLL" returned 1 (0x1). 
Loaded "UXTHEME.DLL" at address 0x000007F941950000. Successfully hooked module. 
DllMain(0x000007F941950000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "UXTHEME.DLL" called. 
DllMain(0x000007F941950000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "UXTHEME.DLL" returned 1 (0x1). 
Error writing a breakpoint at the entrypoint return of "". Entrypoint cannot be hooked. Invalid access to memory location (998). 
Loaded "" at address 0x00000019D1220000. Successfully hooked module. 
Unloaded "" at address 0x00000019D1220000. 
Loaded "START8_64.DLL" at address 0x000007F93A130000. Successfully hooked module. 
DllMain(0x000007F93A130000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "START8_64.DLL" called. 
GetProcAddress(0x000007F943860000 [USER32.DLL], "CreateWindowInBand") called from "START8_64.DLL" at address 0x000007F93A1C0941 and returned 0x000007F943872C20. 
LoadLibraryA("ADVAPI32.dll") called from "START8_64.DLL" at address 0x000007F93A1A1D5C. 
Loaded "ADVAPI32.DLL" at address 0x000007F944E40000. Successfully hooked module. 
Loaded "SECHOST.DLL" at address 0x000007F9439B0000. Successfully hooked module. 
DllMain(0x000007F9439B0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "SECHOST.DLL" called. 
DllMain(0x000007F9439B0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "SECHOST.DLL" returned 1 (0x1). 
DllMain(0x000007F944E40000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "ADVAPI32.DLL" called. 
DllMain(0x000007F944E40000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "ADVAPI32.DLL" returned 1 (0x1). 
LoadLibraryA("ADVAPI32.dll") returned 0x000007F944E40000. 
GetProcAddress(0x000007F944E40000 [ADVAPI32.DLL], "RegOpenKeyExW") called from "START8_64.DLL" at address 0x000007F93A1A1E59 and returned 0x000007F944E413D0. 
GetProcAddress(0x000007F944E40000 [ADVAPI32.DLL], "RegQueryValueExW") called from "START8_64.DLL" at address 0x000007F93A1A1E59 and returned 0x000007F944E413F0. 
GetProcAddress(0x000007F944E40000 [ADVAPI32.DLL], "RegCloseKey") called from "START8_64.DLL" at address 0x000007F93A1A1E59 and returned 0x000007F944E413B0. 
GetProcAddress(0x000007F943860000 [USER32.DLL], "GetWindowBand") called from "START8_64.DLL" at address 0x000007F93A1C0A91 and returned 0x000007F. 
GetProcAddress(0x000007F943860000 [USER32.DLL], "SetWindowBand") called from "START8_64.DLL" at address 0x000007F93A1C0AC1 and returned 0x000007F943872BB0. 
DllMain(0x000007F93A130000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "START8_64.DLL" returned 1 (0x1). 
Loaded "DWMAPI.DLL" at address 0x000007F941120000. Successfully hooked module. 
DllMain(0x000007F941120000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "DWMAPI.DLL" called. 
DllMain(0x000007F941120000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "DWMAPI.DLL" returned 1 (0x1). 
Loaded "COMCTL32.DLL" at address 0x000007F940010000. Successfully hooked module. 
DllMain(0x000007F940010000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "COMCTL32.DLL" called. 
DllMain(0x000007F940010000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "COMCTL32.DLL" returned 1 (0x1). 
Loaded "OLE32.DLL" at address 0x000007F945AB0000. Successfully hooked module. 
DllMain(0x000007F945AB0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "OLE32.DLL" called. 
DllMain(0x000007F945AB0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "OLE32.DLL" returned 1 (0x1). 
Loaded "CRYPTBASE.DLL" at address 0x000007F9429A0000. Successfully hooked module. 
Loaded "BCRYPTPRIMITIVES.DLL" at address 0x000007F942940000. Successfully hooked module. 
DllMain(0x000007F942940000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "BCRYPTPRIMITIVES.DLL" called. 
DllMain(0x000007F942940000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "BCRYPTPRIMITIVES.DLL" returned 1 (0x1). 
DllMain(0x000007F9429A0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "CRYPTBASE.DLL" called. 
DllMain(0x000007F9429A0000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "CRYPTBASE.DLL" returned 1 (0x1). 
Loaded "SHCORE.DLL" at address 0x000007F941D20000. Successfully hooked module. 
DllMain(0x000007F941D20000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "SHCORE.DLL" called. 
DllMain(0x000007F941D20000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "SHCORE.DLL" returned 1 (0x1). 
+0

您是否使用了一些工具(鏈接器啓動橫幅,依賴,dumpbin等)來驗證您是否鏈接了您想要的庫? – WildCrustacean

+0

我沒有,我不熟悉任何這些。 – ronag

+0

而我只是用新的文件覆蓋舊文件,所以我假設我的連接器設置是正確的... – ronag

回答

1

最有可能你已經更新h和的.lib文件,而是鏈接到了過時的DLL。確保程序鏈接到的DLL是與.h和.lib文件匹配的DLL。

通過在配置文件模式下運行Dependency Walker,可以調試程序加載時發生的情況。這將顯示實際加載的DLL的完整路徑,然後您將能夠確定出現了什麼問題。

+0

我確定(多次)他們來自同一個版本。 – ronag

+0

這似乎不合情理。如果是這樣,您需要從源代碼重新構建DLL,或聯繫提供給您的任何人並要求他們修復它。我仍然懷疑錯誤在你身邊。在配置文件模式下運行Dependency Walker(Profile | Start Profiling)。並查看哪個DLL實際加載。 –

+0

我運行了Dependency Walker ...但它沒有多大意義,它試圖加載「」/空字符串? (見編輯後)。 – ronag

相關問題