繁体   English   中英

C ++ DLL使用Windows 7构建时,无法在Windows XP上运行

[英]C++ DLL Not running on Windows XP when built with Windows 7

我对c ++完全陌生,但是我需要向现有c ++ dll中添加一些方法。 该dll最初是使用Visual Studio 2008构建的,并且可以在Windows 7和Windows XP上运行。 添加完方法并再次构建dll后,它仍然可以在Windows 7上运行,但不能在XP上运行。 我从Java调用dll并得到以下异常:

CLI异常 在四处搜索之后,我发现了Dependency Walker,它向我展示了这一点:

依赖行者

用于编译的命令行选项是

/GS /analyze- /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /Ob1 /Fd".\\Release/" /Zc:inline /fp:precise /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "NTPROCESSDLL_EXPORTS" /D "_VC80_UPGRADE=0x0600" /D "_USING_V110_SDK71_" /D "_WINDLL" /D "_MBCS" /errorReport:prompt /GF /WX- /Zc:forScope /Gd /Oy- /MT /Fa".\\Release/" /EHsc /nologo /Fo".\\Release/" /Fp".\\Release/NTProcessDLL.pch"

链接器命令是

/OUT:".\\Release\\NTProcessDLL.dll" /MANIFEST /PDB:".\\Release/NTProcessDLL.pdb" /DYNAMICBASE:NO "pdh.lib" /DEF:".\\NTProcessDLL.def" /IMPLIB:".\\Release/NTProcessDLL.lib" /DEBUG /DLL /MACHINE:X86 /SAFESEH /INCREMENTAL:NO /PGD:".\\Release\\NTProcessDLL.pgd" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:".\\Release\\NTProcessDLL.dll.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1

我添加的方法是:

void _minimizeProcess(long nPid)
{
    EnumWindows(EnumWindowsProcMinimize, nPid);
}


BOOL CALLBACK EnumWindowsProcMinimize(HWND hwnd, LPARAM lParam)
{
    HWND g_HWND = NULL;
    DWORD lpdwProcessId;
    GetWindowThreadProcessId(hwnd, &lpdwProcessId);
    if (lpdwProcessId == lParam)
    {
        g_HWND = hwnd;
        ShowWindow(g_HWND, SW_MINIMIZE);
        CloseHandle(g_HWND);
        Sleep(1);
        return FALSE;
    }
    return TRUE;
}

在XP上运行此程序的任何帮助将不胜感激。 提前谢谢了!

过去我也遇到过类似的问题,那些_xp工具集从来没有用过。 下载并安装Visual Studio 2010( LINK )。 然后运行Visual Studio 2015并转到编译器选项,您应该有一个新的工具集-vs100。 以此编译您的库,它应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM