2012-12-30 68 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

相关问题