none
loadlibrary的奇怪问题 RRS feed

  • 问题

  • auto module1 = LoadLibraryW(L"GeoSpheriodMid.dll");
    DWORD S = GetLastError();

    auto module = LoadLibraryW(L"LocationCommon.dll");
    S = GetLastError();
    FreeLibrary(module);
    module = LoadLibraryW(L"LocationKIA.dll");

    先加载GeoSpheriodMid.dll 再加载和卸载LocationCommon.dll,再加载LocationKIA是发生异常

    CDynLinkLibrary::CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem)
    {
    m_factoryList.Construct(offsetof(COleObjectFactory, m_pNextFactory));
    m_classList.Construct(offsetof(CRuntimeClass, m_pNextClass));

    // copy info from AFX_EXTENSION_MODULE struct
    ASSERT(state.hModule != NULL);
    m_hModule = state.hModule;
    m_hResource = state.hResource;
    m_classList.m_pHead = state.pFirstSharedClass;
    m_factoryList.m_pHead = state.pFirstSharedFactory;
    m_bSystem = bSystem;

    // insert at the head of the list (extensions will go in front of core DLL)
    DEBUG_ONLY(m_pNextDLL = NULL);
    AfxLockGlobals(CRIT_DYNLINKLIST);
    m_pModuleState->m_libraryList.AddHead(this);
    AfxUnlockGlobals(CRIT_DYNLINKLIST);
    }引发了异常: 读取访问权限冲突。

    this->m_pModuleState 是 0x7FED11A29C0。

    2018年11月20日 3:27

全部回复

  • 你好,

    感谢在MSDN论他发帖。

    >>loadlibrary的奇怪问题。

    请问这三个dll文件是你自己做的么? 我在我的电脑里(Win10 version 1803)一个都没有找到。 S的返回值都是126。

    能提供简单的示例吗,或者描述的更详细一些。

    Best Wishes

    Jack Zhang


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年11月20日 7:44
    版主
  • 我觉得可以从下面两方面着手分析:

    1、使用LoadLibrary单独加载一个DLL是否能够成功?

    2、当前环境下你的DLL所依赖的其他DLL是否都存在?

    可以使用depends 来分析一下你的dll

    以上~

    2018年11月21日 13:32