visual c ++ 2012应用程序不会在windows xp下运行 - 更新

时间:2013-10-18 17:49:39

标签: c++ visual-studio-2012 windows-xp

你好,欢迎每一个人

我正在使用visual c ++ 2012 ultimate和更新3,我有一个项目应该在xp pack 3环境中执行,我按照这篇博客中的说明更改工具集 Windows XP Targeting with visual studio 2012

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

我真的没有问题是什么!!

示例 - 源文件

的main.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 text\r\n")
            );

    return TRUE;
}

void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch (id)
    {
    case IDCANCEL:
        EndDialog(hwnd, id);
        break;

    default:
        break;
    }

    return;
}

resource1.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

RESOURCE.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\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
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           "Zirek\r\nAT4RE\r\nDLL 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中我点击应用程序时根本没有发生任何事情。

最佳, Zirek

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我不知道问题是什么,但通常使用dependencywalker是一个好的开始。它会告诉您您的应用程序是否依赖于winxp中不可用的功能,或者您是否忘记部署某些运行时dll。