C++;使用Windows 7构建时,DLL未在Windows XP上运行 我是一个完全的NeWB到C++,但是我需要给现有的C++ DLL添加一些方法。 dll最初是用Visual Studio 2008构建的,它在Windows 7和Windows XP上工作。 在我添加了我的方法并再次构建了dll之后,它仍然可以在Windows7上运行,但不能在XP上运行。 我从Java调用dll,得到以下异常:

C++;使用Windows 7构建时,DLL未在Windows XP上运行 我是一个完全的NeWB到C++,但是我需要给现有的C++ DLL添加一些方法。 dll最初是用Visual Studio 2008构建的,它在Windows 7和Windows XP上工作。 在我添加了我的方法并再次构建了dll之后,它仍然可以在Windows7上运行,但不能在XP上运行。 我从Java调用dll,得到以下异常:,c++,dll,visual-studio-2015,windows-7,windows-xp,C++,Dll,Visual Studio 2015,Windows 7,Windows Xp,在搜索了一段时间后,我找到了Dependency Walker,它向我展示了以下内容: 用于编译的命令行选项包括 /GS/analyze-/W3/Gy/Zc:wchar\u t/Zi/Gm-/O2/Ob1/Fd“\Release/”/Zc:inline/fp:precise/D“WIN32”/D“NDEBUG”/D“\u WINDOWS”/D“\u USRDLL”/D“NTPROCESSDLL\u导出”/D“\u VC80\u升级=0x0600”/D”\u使用V110\u SDK71/D“\u

在搜索了一段时间后,我找到了Dependency Walker,它向我展示了以下内容:

用于编译的命令行选项包括

/GS/analyze-/W3/Gy/Zc:wchar\u t/Zi/Gm-/O2/Ob1/Fd“\Release/”/Zc:inline/fp:precise/D“WIN32”/D“NDEBUG”/D“\u WINDOWS”/D“\u USRDLL”/D“NTPROCESSDLL\u导出”/D“\u VC80\u升级=0x0600”/D”\u使用V110\u SDK71/D“\u windell/D”/D”\u MBCS“/D”/errorReport:prompt/GF/WX-/forScope/Gd/Gd/Fo\Fo/Release//nol//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()。
然后运行您的Visual Studio 2015并转到编译器选项,您应该有一个新的工具集-vs100。用它编译您的库,它应该可以工作。

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

这与在windows 7上构建无关,因为你使用VS2015和标准工具集构建,该工具集创建不在XP上运行的可执行文件。你需要v140\U XP工具集例如,我确实这样做了,我的平台工具集设置为Visual Studio 2015-Windows XP(v140\u XP)这与在windows 7上构建无关,因为您使用VS2015和标准工具集构建,该工具集创建不在XP上运行的可执行文件。您需要v140_XP工具集,例如,我确实这样做了,我的平台工具集设置为Visual Studio 2015-windows XP(v140_XP)谢谢你的回答,我来试试:)谢谢你的回答,我来试试:)