📄 subject_61650.htm
字号:
<p>
序号:61650 发表者:zengxiaodonghcgs 发表日期:2003-11-20 22:57:06
<br>主题:为什么我写了一个DLL,用的时候有点问题,在调试可以通过,但程序不能正常执行
<br>内容:为什么我写了一个DLL,用的时候有点问题,在调试可以通过,但程序不能正常执行。<BR><BR>就是我在按F5调试的时候通过了,但我把他做成执行程序后,就不行CRTL F5 也是不行,请教,DLL的原代码在下面:分两个CPP 文件。Db_Connect.cpp是向导的,Connect_DB 是我加的一个类,同时我的几个函数就在里面。目的是ODBC连数据库,我就是想包装一下。<BR>// Db_Connect.cpp : Defines the initialization routines for the DLL.<BR>//<BR><BR>#include "stdafx.h"<BR>#include <afxdllx.h><BR><BR>#ifdef _DEBUG<BR>#define new DEBUG_NEW<BR>#undef THIS_FILE<BR>static char THIS_FILE[] = __FILE__;<BR>#endif<BR><BR><BR>static AFX_EXTENSION_MODULE Db_ConnectDLL = { NULL, NULL };<BR><BR>extern "C" int APIENTRY<BR>DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)<BR>{<BR> // Remove this if you use lpReserved<BR> UNREFERENCED_PARAMETER(lpReserved);<BR><BR> if (dwReason == DLL_PROCESS_ATTACH)<BR> {<BR> TRACE0("DB_CONNECT.DLL Initializing!\n");<BR> <BR> // Extension DLL one-time initialization<BR> if (!AfxInitExtensionModule(Db_ConnectDLL, hInstance))<BR> return 0;<BR><BR> // Insert this DLL into the resource chain<BR> // NOTE: If this Extension DLL is being implicitly linked to by<BR> // an MFC Regular DLL (such as an ActiveX Control)<BR> // instead of an MFC application, then you will want to<BR> // remove this line from DllMain and put it in a separate<BR> // function exported from this Extension DLL. The Regular DLL<BR> // that uses this Extension DLL should then explicitly call that<BR> // function to initialize this Extension DLL. Otherwise,<BR> // the CDynLinkLibrary object will not be attached to the<BR> // Regular DLL's resource chain, and serious problems will<BR> // result.<BR><BR> new CDynLinkLibrary(Db_ConnectDLL);<BR> }<BR> else if (dwReason == DLL_PROCESS_DETACH)<BR> {<BR> TRACE0("DB_CONNECT.DLL Terminating!\n");<BR> // Terminate the library before destructors are called<BR> AfxTermExtensionModule(Db_ConnectDLL);<BR> }<BR> return 1; // ok<BR>}<BR><BR>//==================================<BR><BR>#if !defined(AFX_ONNECT_DB_H__00E5F139_A713_48E0_B2BC_CAB9D8F6BAFC__INCLUDED_)<BR>#define AFX_ONNECT_DB_H__00E5F139_A713_48E0_B2BC_CAB9D8F6BAFC__INCLUDED_<BR><BR>#if _MSC_VER > 1000<BR>#pragma once<BR>#endif // _MSC_VER > 1000<BR>// onnect_db.h : header file<BR>//<BR><BR>/////////////////////////////////////////////////////////////////////////////<BR>// Connect_DB window<BR><BR>class AFX_EXT_CLASS Connect_DB<BR>{<BR>// Construction<BR>public:<BR> Connect_DB();<BR>//<BR>// Attributes<BR>public:<BR><BR>// Operations<BR>public:<BR><BR>// Overrides<BR> // ClassWizard generated virtual function overrides<BR> //{{AFX_VIRTUAL(Connect_DB)<BR> //}}AFX_VIRTUAL<BR><BR>// Implementation<BR>public:<BR> HDBC Init_Connect_Hdbc(char Res[], char Passw[], char User[]);<BR> HDBC Init_Hdbc(HENV henv);//在初始化HCBC同时连接数据库SERVER<BR> HENV Init_Henv();//在初始化HENV<BR> HSTMT Inin_Hstmt(HDBC hdbc);//在初始化HSTMT<BR> BOOL Set_Paramete(char Res[],char Passw[],char User[]);//送参数<BR> BOOL Connect_Test(HSTMT hstmt);//在初始化所以的变量后,可以用这个函数来判断连接状态,FALSE 是连接失败<BR> virtual ~Connect_DB();<BR><BR> // Generated message map functions<BR>protected:<BR> UCHAR Resource[30];<BR> UCHAR Userid[30];<BR> UCHAR Password[30];<BR><BR>};<BR><BR>/////////////////////////////////////////////////////////////////////////////<BR><BR>//{{AFX_INSERT_LOCATION}}<BR>// Microsoft Visual C++ will insert additional declarations immediately before the previous line.<BR><BR>#endif // !defined(AFX_ONNECT_DB_H__00E5F139_A713_48E0_B2BC_CAB9D8F6BAFC__INCLUDED_)<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:hurtmanzc 回复日期:2003-11-21 00:27:04
<br>内容:从上面的代码看不出错误,可能是你使用这个扩展DLL的项目设置的不对。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:zengxiaodonghcgs 回复日期:2003-11-21 08:40:34
<br>内容:希望是这样,但我不知道什么地方设置不对,我也是刚刚学自己做DLL。还的各位帮忙指点指点~~~
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:zengxiaodonghcgs 回复日期:2003-11-21 16:16:34
<br>内容:确实代码没有问题,现在我用动态的方式来调用他,发现运行几次后就可以,我这个重要是ODBCSDK连数据库的,可能这个就是这样吧,调试很方便的过,但执行的时候就要连接好几次才可以,难怪有人不喜欢!!~~~
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -