int main()
{
    LoadLibrary("mydlls\\engine.dll");
    return 0;
}如题。

解决方案 »

  1.   

    错了,是动态的,静态是通过工程下的 DEBUG
      

  2.   


    csdn太苛刻了,不像gameres可以自由修改
      

  3.   

    是动态加载,静态加载是在Project=>setting=>Link添加
      

  4.   

    一般来说用
    loadlibary();
    freelibary();就是动态啊。
      

  5.   

    用LoadLibrary加载的都应该是动态加载的,静态的加载一般是用#pragma comment说明或是在IDE中设置的。静态加载与动态加载不同之处在于,静态加载的DLL是在一运行时,主模块尚未加载之前就先加DLL模块。
      

  6.   


    但我的程序既链接了lib,又执行了LoadLibrary(),该怎么算呢?PS:我开始为了解决能够加载指定目录下的dll文件,便改用动态加载方式(LoadLibrary()),但为了省事,我查到了可以延迟加载DLL,然后我不需要做任何函数地址获取,而只需要在原先静态链接方式基础上,再加上一条语句:LoadLibrary(),以及在项目属性中设置一下dll延迟加载就完事了。
    并且通过验证,我的dll的确是通过LoadLibrary()加载出来的,因为一般的静态链接,只能加载exe所在目录的dll,而不能加载其他目录下的dll。。
      

  7.   

    延迟加载设置延迟加载就完事了,不要LoadLibrary如果你连接了lib,exe装载时就会装载dll,LoadLibrary只是增加一个引用数,不干别的
      

  8.   


    但问题是,我要加载的dll不在exe的目录下,而是在其他目录。我尝试过,将延迟加载的dll设成我指定的路径,但是运行仍然加载不了,提示找不到dll。。
      

  9.   

    loadlibrary是立即加载模块
    你可以setdlldirectory
      

  10.   


    恩,这样就OK了.谢谢..int main()
    {
    //  HINSTANCE hDll = LoadLibrary("dll\\MyDll.dll");
    //  if (hDll == NULL)
    //  {
    //  MessageBoxA(0, "dll加载失败", 0, MB_OK);
    //  return 0;
    //  } SetDllDirectoryA("dll"); DLLTest();// FreeLibrary(hDll); return 0;
    }
      

  11.   


    再请问一下,延迟加载dll的方式是静态链接是吧??
      

  12.   

    dllmain的dwreserved参数会告诉你
      

  13.   

    动态加载的,如果使用lib就是静态加载
      

  14.   

    LoadLibrary GetProcAddress FreeLibrary 类函数是叫“Run-Time Dynamic Linking”,其实就是动态链接,与" Load-Time Dynamic Linking"想对应,也叫静态连接。
    延迟加载dll 属于 半静态 半动态
    因为用延迟加载就需要delay-load helper function,即延时加载管理器,它是需要静态链接的,
    要加载的dll则动态的。
      

  15.   

    没得可怀疑的, 是动态的
    会直接调用dllmain函数
      

  16.   

    动态加载的。静态加载方式是
    #pragma comment(lib,"___.dll")
      

  17.   

    写错了,#pragma comment(lib,"___.lib")
      

  18.   

    有必要分这么清么必须通过loadlibrary加载,否则无法调用dll接口的为动态加载。
    否则为静态加载。分那么细没啥意义