工程exe文件异常关闭怎么回事,Temp提示如下

山书生 2010-01-19 10:45:22
<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="ThreadTest.exe" FILTER="GRABMI_FILTER_PRIVACY">
<MATCHING_FILE NAME="ThreadTest.exe" SIZE="110664" CHECKSUM="0x1BD11838" BIN_FILE_VERSION="1.0.0.1" BIN_PRODUCT_VERSION="1.0.0.1" PRODUCT_VERSION="1, 0, 0, 1" FILE_DESCRIPTION="ThreadTest Microsoft 基础类应用程序" COMPANY_NAME="" PRODUCT_NAME="ThreadTest 应用程序" FILE_VERSION="1, 0, 0, 1" ORIGINAL_FILENAME="ThreadTest.EXE" INTERNAL_NAME="ThreadTest" LEGAL_COPYRIGHT="版权所有 (C) 2008" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="1.0.0.1" UPTO_BIN_PRODUCT_VERSION="1.0.0.1" LINK_DATE="01/19/2010 02:05:54" UPTO_LINK_DATE="01/19/2010 02:05:54" VER_LANGUAGE="中文(中国) [0x804]" />
</EXE>
<EXE NAME="PPcode.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="PPcode.dll" SIZE="241664" CHECKSUM="0x62FFD446" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="01/19/2010 02:04:01" UPTO_LINK_DATE="01/19/2010 02:04:01" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1146880" CHECKSUM="0xD708C516" BIN_FILE_VERSION="5.1.2600.3541" BIN_PRODUCT_VERSION="5.1.2600.3541" PRODUCT_VERSION="5.1.2600.3541" FILE_DESCRIPTION="Windows NT BASE API Client DLL" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Microsoft(R) Windows(R) Operating System" FILE_VERSION="5.1.2600.3541 (xpsp_sp2_gdr.090321-1320)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="(C) Microsoft Corporation. All rights reserved." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x125F70" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.3541" UPTO_BIN_PRODUCT_VERSION="5.1.2600.3541" LINK_DATE="03/21/2009 14:18:59" UPTO_LINK_DATE="03/21/2009 14:18:59" VER_LANGUAGE="中文(中国) [0x804]" />
</EXE>
</DATABASE>
...全文
334 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
L_J_MAO 2011-06-20
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="simulation.exe" FILTER="GRABMI_FILTER_PRIVACY">
<MATCHING_FILE NAME="simulation.exe" SIZE="2748519" CHECKSUM="0x9FC9ECD7" BIN_FILE_VERSION="1.0.0.1" BIN_PRODUCT_VERSION="1.0.0.1" PRODUCT_VERSION="1, 0, 0, 1" FILE_DESCRIPTION="simulation MFC Application" COMPANY_NAME="" PRODUCT_NAME="simulation Application" FILE_VERSION="1, 0, 0, 1" ORIGINAL_FILENAME="simulation.EXE" INTERNAL_NAME="simulation" LEGAL_COPYRIGHT="Copyright (C) 2010" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="1.0.0.1" UPTO_BIN_PRODUCT_VERSION="1.0.0.1" LINK_DATE="06/16/2011 13:59:03" UPTO_LINK_DATE="06/16/2011 13:59:03" VER_LANGUAGE="英语(美国) [0x409]" />
<MATCHING_FILE NAME="simulation1.exe" SIZE="2748519" CHECKSUM="0x396B547D" BIN_FILE_VERSION="1.0.0.1" BIN_PRODUCT_VERSION="1.0.0.1" PRODUCT_VERSION="1, 0, 0, 1" FILE_DESCRIPTION="simulation MFC Application" COMPANY_NAME="" PRODUCT_NAME="simulation Application" FILE_VERSION="1, 0, 0, 1" ORIGINAL_FILENAME="simulation.EXE" INTERNAL_NAME="simulation" LEGAL_COPYRIGHT="Copyright (C) 2010" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="1.0.0.1" UPTO_BIN_PRODUCT_VERSION="1.0.0.1" LINK_DATE="06/15/2011 14:47:39" UPTO_LINK_DATE="06/15/2011 14:47:39" VER_LANGUAGE="英语(美国) [0x409]" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1150464" CHECKSUM="0xC48B85C8" BIN_FILE_VERSION="5.1.2600.5781" BIN_PRODUCT_VERSION="5.1.2600.5781" PRODUCT_VERSION="5.1.2600.5781" FILE_DESCRIPTION="Windows NT BASE API Client DLL" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Microsoft(R) Windows(R) Operating System" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="(C) Microsoft Corporation. All rights reserved." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x11E97E" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.5781" UPTO_BIN_PRODUCT_VERSION="5.1.2600.5781" LINK_DATE="03/21/2009 14:06:57" UPTO_LINK_DATE="03/21/2009 14:06:57" VER_LANGUAGE="中文(中国) [0x804]" />
</EXE>
</DATABASE>
楼主 这个错误报告说的是啥意思呀?怎么处理这个错误?
山书生 2010-01-19
  • 打赏
  • 举报
回复
011328EE   mov         ecx,dword ptr [esp+14h]//黄色右向箭头停在此行开头
--- D:\aaa\ZY_code\PhonePayment\PPcode\payment.cpp -------------------------------------------------------------------------------------------------------
17:
18: extern "C" _declspec(dllexport) int SendParamter( char *posseg, char *transAmount, char *gatewayId, char *orderId, char *transType, char *cardNo, char *validDate, char *cvv2, char *IDNum, char *name )
19: {
011328F0 and al,14h
山书生 2010-01-19
  • 打赏
  • 举报
回复
DLL源码

// telpay.cpp : Defines the entry point for the DLL application: PhonePaymentService.wsdl.
// It is a program for the WSDL - Web Service linking.

#include <afx.h>
#include "stdafx.h"
#include "soapH.h"
#include "PhonePaymentServiceHttpBinding.nsmap"
#include<stdio.h>

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}

extern "C" _declspec(dllexport) int SendParamter( char *posseg, char *transAmount, char *gatewayId, char *orderId, char *transType, char *cardNo, char *validDate, char *cvv2, char *IDNum, char *name )
{

ns2__MBFRequestHeader header; //定义的header
ns3__sendPaymentInfoRequestBody body; //定义的body
ns3__sendPaymentInfoRequest request; //定义的request
ns3__sendPaymentInfoResponse response;//定义的response
_ns3__sendPaymentInfo soapinput;// 定义的输入
_ns3__sendPaymentInfoResponse soapoutput;// 定义的输出

//初始化soap
struct soap soap;
soap_init ( &soap );

const char* server = "http://192.168.100.53:9106/SuNingServiceWeb/mb";//定义测试服务器的URL
// const char* server = "http://192.168.130.106:9106/SuNingServiceWeb/mb";//定义生产服务器的URL
//20091028a v10.
// const char* server = "http://192.168.134.66:9106/SuNingServiceWeb/mb";//定义PRE服务器的URL

//给输入变量赋值
header.MBServiceCode = "PHONE_PAY_SENDPAYMENTINFO";
body.POSID = "00000009"; // A1
body.POSPWD = "123456"; // A2
body.POSSEG = "1100"; // A3
body.transAmount = transAmount; // B1
body.gatewayId = gatewayId; // B2
body.orderId = orderId; // B3 6-16
body.transType = transType; // B4
body.cardNo = cardNo; // B5 12~19
body.validDate = validDate; // B6
body.cvv2 = cvv2; // B7
body.IDNum = IDNum; // B8 max20
body.name = name; // B9

request.MbfHeader = &header;
request.MbfBody = &body;

soapinput.input1 = &request;

FILE *fp = fopen("paymentlog.txt", "a"); //以添加的方式输出到文件
CTime tm; //获取系统时间
tm = CTime::GetCurrentTime();
fprintf(fp,"[%s] ",tm.Format("%m/%d/%Y %H:%M:%S"));
fprintf(fp," %s; %s,%s,%s,%s,%s; ", header.MBServiceCode,body.POSID,body.POSPWD,body.POSSEG,body.transAmount,body.gatewayId,body.orderId,body.transType,body.cardNo,body.validDate,body.cvv2,body.IDNum,body.name);
fprintf(fp,"\n");

char *flag = new char[256]; //soap输出的值
//调用Webservice
if(soap_call___ns1__sendPaymentInfo(&soap,server,NULL,&soapinput,&soapoutput) == 0)
{
response = *soapoutput.output1;
strcpy(flag,response.flag);
tm = CTime::GetCurrentTime();
fprintf(fp,"[%s] ",tm.Format("%m/%d/%Y %H:%M:%S"));
fprintf(fp," flag=%s;",flag);
fprintf(fp,"\n");
fclose(fp);

return atoi(flag);
}
else
{
soap_print_fault(&soap, stderr); // display the SOAP fault message on the stderr stream
tm = CTime::GetCurrentTime();
fprintf(fp,"[%s] ",tm.Format("%m/%d/%Y %H:%M:%S"));
fprintf(fp," error:communicate with web service failure");
fprintf(fp,"\n");
fclose(fp);
return 2;
// exit(1);
}

//收尾
soap_destroy(&soap); // delete deserialized class instances
soap_end(&soap); // remove deserialized data and clean up
soap_done(&soap); // detach the gSOAP environment

delete []flag;
return 0;
}
onlyliu 2010-01-19
  • 打赏
  • 举报
回复

HMODULE hModule=::LoadLibrary("..\\PPtest\\Release\\PPcode.dll");
看看hModule 句柄是否加载成功。
然后 这句提到FOR循环得外边来。
MYPROC SendParamter= (MYPROC) GetProcAddress(hModule, "SendParamter");
再然后跟踪进DLL。看看送进参数以后的操作
PPCODE.DLL有源码吧?
jingzhongrong 2010-01-19
  • 打赏
  • 举报
回复
看下出错时的堆栈信息吧。
山书生 2010-01-19
  • 打赏
  • 举报
回复
Loaded 'C:\WINDOWS\system32\ws2_32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\ws2help.dll', no matching symbolic information found.
First-chance exception in ThreadTest.exe (PPCODE.DLL): 0xC0000005: Access Violation.
----
请教该如何解决呀
onlyliu 2010-01-19
  • 打赏
  • 举报
回复
那你跟踪进DLL看。
山书生 2010-01-19
  • 打赏
  • 举报
回复
这是一个网上找的多线程测试程序改的。
调用测试一个开发的dll。
换在dll里面debug,F5用该测试程序运行。发现到调用dll就出问题,就是SendParamter调dll……

loop_k 2010-01-19
  • 打赏
  • 举报
回复
遇到过这样的问题,资源应该还在使用就退出线程了吧
wuchuncai 2010-01-19
  • 打赏
  • 举报
回复
单步跟踪一下,就可以确定崩溃的位置。
我怀疑是SendParamter函数有问题
onlyliu 2010-01-19
  • 打赏
  • 举报
回复
估计有可能是你线程里的资源没有释放完。。
TerminateThread(hThread,dwThreadId);

山书生 2010-01-19
  • 打赏
  • 举报
回复

// ThreadTestDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ThreadTest.h"
#include "ThreadTestDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
typedef int (*MYPROC)( char *posseg, char *transAmount, char *gatewayId, char *orderId, char *transType, char *cardNo, char *validDate, char *cvv2, char *IDNum, char *name );

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CThreadTestDlg dialog

CThreadTestDlg::CThreadTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CThreadTestDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CThreadTestDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CThreadTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CThreadTestDlg)
DDX_Control(pDX, IDC_STATIC_NUM, m_static);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CThreadTestDlg, CDialog)
//{{AFX_MSG_MAP(CThreadTestDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)
ON_BN_CLICKED(IDC_BUTTON_PAUSE, OnButtonPause)
ON_BN_CLICKED(IDC_BUTTON_CONTINUE, OnButtonContinue)
ON_BN_CLICKED(IDC_BUTTON_END, OnButtonEnd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CThreadTestDlg message handlers

BOOL CThreadTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
}

void CThreadTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CThreadTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CThreadTestDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

void lpRecvProc(LPVOID lpParam)
{
CStatic* pStatic=(CStatic*)lpParam;
//显式加载dll
HMODULE hModule=::LoadLibrary("..\\PPtest\\Release\\PPcode.dll");
MYPROC SendParamter = 0;
char str1[] = "1100";
char str2[] = "20.00";
char str3[] = "T6";
char str4[] = "2010011117009999";
char str5[] = "P";
char str6[] = "45645645645698";
char str7[] = "1212";
char str8[] = "778";
char str9[] = "111222333444555666";
char str10[] = "钱包包";
int sum = 0;
for(int i=0;i<5;i++)
{
CString str;
// str1.Format("%08d",i);
// pStatic->SetWindowText(str1);
MYPROC SendParamter= (MYPROC) GetProcAddress(hModule, "SendParamter");
int rtn = SendParamter(str1,str2,str3,str4,str5,str6,str7,str8,str9,str10);
sum = sum + rtn;
str.Format("%08d",sum);
pStatic->SetWindowText(str);

}
}

void CThreadTestDlg::OnButtonStart()
{
if(hThread)
TerminateThread(hThread,dwThreadId);

hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)lpRecvProc,&m_static,0,&dwThreadId);
if(hThread==NULL)
AfxMessageBox("创建线程失败!");
}

void CThreadTestDlg::OnButtonPause()
{
if(hThread)
SuspendThread(hThread);
}

void CThreadTestDlg::OnButtonContinue()
{
if(hThread)
ResumeThread(hThread);
}

void CThreadTestDlg::OnButtonEnd()
{
if(hThread)
{
TerminateThread(hThread,dwThreadId);
}
else
{
MessageBox("");
}
}

山书生 2010-01-19
  • 打赏
  • 举报
回复
最终……发现dll送出去的一个参数值不对……返回参数值有问题,便导致了如此的异常!
改了该送出去的参数值就正常了:(

PS: DLL完成调用webservice接口、将相关所需的参数值传递过去,接收返回值。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧