visual c++ 2012 应用程序无法在 windows xp 下运行 - 已更新
Posted
技术标签:
【中文标题】visual c++ 2012 应用程序无法在 windows xp 下运行 - 已更新【英文标题】:visual c++ 2012 application won't run under windows xp - updated 【发布时间】:2013-10-27 16:07:44 【问题描述】:大家好,欢迎大家
我正在使用 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
资源.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 中,当我单击应用程序时,什么都没有发生。
最好, 齐雷克
【问题讨论】:
我不确定您希望我们做什么来帮助您。我们无法获得任何帮助调试问题的方法,因为我们没有您的任何代码,也没有关于它的作用或依赖于什么的信息,也没有任何信息可用于尝试解决问题。您认为我们究竟在多大程度上可以帮助实现零信息或访问? 抱歉,包含源文件 您似乎从未调用过使用树控件所需的InitCommonControls
。
【参考方案1】:
您需要在要运行该应用程序的任何机器上安装VC++ 2012 Redistributables。确保下载并安装与您的 Visual Studio 版本匹配的可再发行组件,包括更新(例如,如果您有 VS2012 Update 2,则分发该版本,而不是 VS2013 Update 3 的可再发行组件)。
【讨论】:
【参考方案2】:我也不知道问题出在哪里,但总的来说使用dependencywalker 是一个好的开始。它会告诉您您的应用程序是否依赖于 winxp 中不可用的功能,或者您是否忘记部署一些运行时 dll。
【讨论】:
我分享源代码,我只使用windows api,我认为问题在我的资源文件中,但我不知道如何阅读它。以上是关于visual c++ 2012 应用程序无法在 windows xp 下运行 - 已更新的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studios 2012 更改运行时库会导致链接错误,使用 C++
c++ 函数模板的问题,请看代码,为啥去掉注释后,visual studio 2012会无法运行。
使用 Visual Studio 2012 Profiler 分析 C++
无法使用 /clr 选项从 Visual C++ 项目加载 CLR