Visual C++ 2012 应用程序无法在 Windows XP 下运行 - 已更新

visual c++ 2012 application won't run under windows xp - updated

本文关键字:XP 运行 已更新 Windows 2012 C++ 应用程序 Visual      更新时间:2023-10-16

你好,欢迎每个人

我使用Visual C ++ 2012旗舰版更新3,我有一个项目应该在XP Pack 3环境中执行,我更改了工具集,如本博客中所述Windows XP Targeting with Visual Studio 2012

在我的Windows XP机器上,我安装了SVCedit.exe Visual 2012 Update 3,但问题是代码无法运行,并且根本没有显示任何错误。

我真的不知道问题是什么!!

示例 - 源文件

主.cpp

#include <WindowsX.h>
#include <Windows.h>
#include <tchar.h>
#include <stdio.h>
#include "resource1.h"
#define my_PROCESS_MESSAGE(hWnd, message, fn)   
    case(message):  
        return( 
            SetDlgMsgResult(hWnd, uMsg, 
                HANDLE_##message((hWnd), (wParam), (lParam), (fn)) ))   
LRESULT CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
int WINAPI _tWinMain(   HINSTANCE   hInstance,
                HINSTANCE,
                LPTSTR,
                int         iCmdShow    )
{
    DialogBoxParam( hInstance,
            MAKEINTRESOURCE(IDD_DLLINJECTOR),
            NULL,
            (DLGPROC) DlgProc,
            NULL
            );
    return 0;
}
LRESULT CALLBACK DlgProc(   HWND    hWnd,
                            UINT    uMsg,
                            WPARAM  wParam,
                            LPARAM  lParam  )
{
    switch (uMsg)
    {
        my_PROCESS_MESSAGE(hWnd, WM_INITDIALOG, Cls_OnInitDialog);
        my_PROCESS_MESSAGE(hWnd, WM_COMMAND, Cls_OnCommand);
    default:
        break;
    }
    return FALSE;
}
BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    SetDlgItemText( hwnd,
            IDC_DEBUG,
            _T("Zirek: Some textrn")
            );
    return TRUE;
}
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch (id)
    {
    case IDCANCEL:
        EndDialog(hwnd, id);
        break;
    default:
        break;
    }
    return;
}

资源1.h

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Resource.rc
//
#define IDCANCEL2                       3
#define IDCANCEL3                       4
#define IDD_DIALOG1                     101
#define IDD_DLLINJECTOR                 101
#define IDC_TREE1                       1001
#define IDC_EDIT1                       1002
#define IDC_DEBUG                       1003
#define IDC_LIST1                       1004
#define IDC_EDIT4                       1005
#define IDC_EDIT3                       1007
// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1006
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

资源.rc

// Microsoft Visual C++ generated resource script.
//
#include "resource1.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE 
BEGIN
    "resource1.h"
END
2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""rn"
    ""
END
3 TEXTINCLUDE 
BEGIN
    "rn"
    ""
END
#endif    // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_DLLINJECTOR DIALOGEX 0, 0, 559, 255
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "DLL Injector"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    PUSHBUTTON      "&Close",IDCANCEL,494,54,50,14
    CONTROL         "",IDC_TREE1,"SysTreeView32",WS_BORDER | WS_HSCROLL | WS_TABSTOP,7,7,125,221,WS_EX_CLIENTEDGE
    EDITTEXT        IDC_EDIT1,7,234,125,14,ES_AUTOHSCROLL,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
    EDITTEXT        IDC_DEBUG,138,149,414,99,ES_MULTILINE | ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
    CONTROL         "",IDC_LIST1,"SysListView32",LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,138,7,125,137,WS_EX_CLIENTEDGE
    CTEXT           "ZirekrnAT4RErnDLL Injector",IDC_STATIC,486,23,66,26,0,WS_EX_CLIENTEDGE
    EDITTEXT        IDC_EDIT3,269,130,226,14,ES_AUTOHSCROLL,WS_EX_DLGMODALFRAME
    PUSHBUTTON      "&Inject",IDCANCEL2,494,74,50,29
    EDITTEXT        IDC_EDIT4,269,7,211,117,ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
    DEFPUSHBUTTON   "&Open",IDCANCEL3,502,130,50,14
END

/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
    IDD_DLLINJECTOR, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 552
        TOPMARGIN, 7
        BOTTOMMARGIN, 248
    END
END
#endif    // APSTUDIO_INVOKED
#endif    // English (United States) resources
/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//

/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

代码在Windows 8和Windows 7上正常运行,但是在Windows XP中,当我单击该应用程序时,什么也没发生。

最好齐雷克

您需要在要运行应用程序的任何计算机上安装 VC++ 2012 可再发行组件。确保下载并安装与Visual Studio版本(包括更新)匹配的可再发行组件(例如,如果您有VS2012 Update 2,请分发该版本,而不是VS2013 Update 3的可再发行组件)。

我也不知道

问题是什么,但总的来说,使用依赖性walker是一个好的开始。它会告诉您您的应用程序是否依赖于 winxp 中不可用的功能,或者您是否忘记部署一些运行时 dll。