skip to Main Content

I have a program and it worked just fine, but when I compiled my MainDLL.dll file, my program won’t find it. It returns (0x7E) (The specified module could not be found). The .dll file is in the same folder as the .exe file. But when I tried to open a different .dll file from the same folder, it works just fine.

The main entry program code looks like this:

#include "WinMain.hpp"

    int APIENTRY wWinMain(_In_ HINSTANCE hInst, _In_opt_ HINSTANCE hPrevInst, 
        _In_ LPWSTR lpCmdLine, _In_ int nShowCmd) {
        dbg::SetDebugState(true);
    
        mf::InitMF(L"MainDLL.dll");
    
        int iResult = mf::MainFunc(hInst, hPrevInst, lpCmdLine, nShowCmd);
    
        mf::UninitMF();
    
        return iResult;
    } 

It runs my .lib library that should load the MainDLL.dll file via mf::InitMF(L"MainDLL.dll"); function call.

The .lib library code looks like this:

#include "../Libs/MainLib.hpp"

mf::MainFuncPtr mf::MainFunc = nullptr;

namespace __mf {
    HMODULE hmLib = nullptr;
}

void mf::InitMF(LPCWSTR Path) {

    HRESULT hr = 0l;

    __mf::hmLib = LoadLibraryW(Path);
    if (__mf::hmLib == nullptr) {
        hr = (HRESULT)GetLastError();
        dbg::ErrorWnd(L"load main dll func error", L"Chyba", hr, __LINE__, __FILEW__);
        ExitProcess(13u);
    }

    mf::MainFunc = (mf::MainFuncPtr)GetProcAddress(
        __mf::hmLib, "__MainFunc");
    if (mf::MainFunc == nullptr) {
        hr = (HRESULT)GetLastError();
        dbg::ErrorWnd(L"get main proc error", L"Chyba", hr, __LINE__, __FILEW__);
        ExitProcess(13u);
    }
}

void mf::UninitMF(void) {
    FreeLibrary(__mf::hmLib);
} 

Since any other .dll file loads just fine, I think it’s something with the MainDLL.dll file, but when I compile it, it compiles without any problem.

Last thing I did in MainDLL.dll was that I included my other DLL for drawing using D2D1, and after that I cannot load it.

I am using Microsoft Visual Studio 2022.

2

Answers


  1. Chosen as BEST ANSWER

    I found out that in my header file MainLib.hpp I had wrong path to my MainDLL.hpp header. after changing the path the program runs ok

    #pragma once
    #include "../Libs/MainDLL.hpp"
    //#include "MainDLL.hpp" - fails to load MainDLL.dll library
    
    namespace mf {
        extern mf::MainFuncPtr MainFunc;
    
        void InitMF(LPCWSTR Path);
    
        void UninitMF(void);
    }
    

  2. Last thing I did in MainDLL.dll was that I included my other DLL for drawing using D2D1, and after that I cannot load it.

    This is likely the root of your problem. It is not that MainDLL.dll itself can’t be found, but rather that another DLL it depends on can’t be found. Make sure all relevant DLLs are in your EXE’s folder (or at least on the system search path).

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search