即使找不到DLL,也要启动应用程序?

时间:2017-10-23 03:42:29

标签: c++ winapi dll

假设我有

  1. main.exe中的main()
  2. dllA中的functionA()
  3. dllB中的functionB()
  4. 在main.exe中,

    int main()
    {
       if(1)
        {
           functionA();
        }
        else
        {
           functionB();
        }
    }
    

    假设我没有dllB而只有dllA,我仍然想启动应用程序main.exe。

    有没有办法可以在main.exe启动时绕过DLL检查,这样我仍然可以在没有dllB的情况下启动应用程序?

2 个答案:

答案 0 :(得分:2)

不要将DLL指定为依赖项。然后,您可以使用此代码动态加载函数:

HMODULE libA = LoadLibrary("dllA.dll"); // NULL if load failed
HMODULE libB = LoadLibrary("dllB.dll"); // NULL if load failed

void (*functionA)(void) = libA ? GetProcAddress(libA,"functionA"):NULL;
void (*functionB)(void) = libB ? GetProcAddress(libB,"functionB"):NULL;

答案 1 :(得分:1)

至少在Windows上,您可以使用Loadlibrary

在运行时明确加载dll

edit:如果找不到DLL或无法加载

,则返回NULL