是这样的,我在调一个写好的工程,这个工程在debug模式下运行时会开一个控制台串口输出调试数据。这个控制台使用dll做的,叫Console.dll,用的是隐式连接(在依赖项里添了Console.lib,并且没有使用loadlibrary)。他在Console.cpp里写了“ConsoleTrace _classOTrace;”,ConsoleTrace是控制台类,即运行了实例化,于是就打开了一个控制台窗口。通过调试,我发现运行了__DllMainCRTStartup,但是我自己做了一个实验,隐式连接没有反应,必须loadlibrary才能实现他的这个效果。我想问一下,隐式连接能够运行__DllMainCRTStartup函数吗?为什么我自己做就不行,请教高手我是不是遗漏了什么东西?
检查你的DLL链接选项,/ENTRY是否指定了其他函数,或者如果你使用2005之前的版本,确保你使用的是/MD或/MDd编译选项
厄,我试了一下,所有的选项都是默认的,也符合您说的条件,结果还是隐式链接无法运行__DllMainCRTStartup,我打开了crtdll,并在__DllMainCRTStartup打上了断点,显式链接可以进入,隐式链接无反应,区别只在于是否运行了HANDLE h = LoadLibrary(Console); ...,继续求教...
你连接器中指定再多lib,如果没有用到里面的东西等于没加
你去看看工程设置里面有多少导入库,你实际隐式连接的的dll又有多少