📄 subject_27834.htm
字号:
<p>
序号:27834 发表者:流水子妃 发表日期:2003-01-15 18:47:24
<br>主题:向会vb的vc高手们请教关于dll的问题
<br>内容:我在vc中做了一个dll<BR>实现的代码如下:<BR>// Te3.cpp : Defines the initialization routines for the DLL.<BR>//<BR><BR>#include "stdafx.h"<BR>#include "Te3.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>// Note!<BR>//<BR>// If this DLL is dynamically linked against the MFC<BR>// DLLs, any functions exported from this DLL which<BR>// call into MFC must have the AFX_MANAGE_STATE macro<BR>// added at the very beginning of the function.<BR>//<BR>// For example:<BR>//<BR>// extern "C" BOOL PASCAL EXPORT ExportedFunction()<BR>// {<BR>// AFX_MANAGE_STATE(AfxGetStaticModuleState());<BR>// // normal function body here<BR>// }<BR>//<BR>// It is very important that this macro appear in each<BR>// function, prior to any calls into MFC. This means that<BR>// it must appear as the first statement within the <BR>// function, even before any object variable declarations<BR>// as their constructors may generate calls into the MFC<BR>// DLL.<BR>//<BR>// Please see MFC Technical Notes 33 and 58 for additional<BR>// details.<BR>//<BR><BR>/////////////////////////////////////////////////////////////////////////////<BR>// CTe3App<BR><BR>BEGIN_MESSAGE_MAP(CTe3App, CWinApp)<BR> //{{AFX_MSG_MAP(CTe3App)<BR> // NOTE - the ClassWizard will add and remove mapping macros here.<BR> // DO NOT EDIT what you see in these blocks of generated code!<BR> //}}AFX_MSG_MAP<BR>END_MESSAGE_MAP()<BR><BR>/////////////////////////////////////////////////////////////////////////////<BR>// CTe3App construction<BR><BR>CTe3App::CTe3App()<BR>{<BR> // TODO: add construction code here,<BR> // Place all significant initialization in InitInstance<BR>}<BR><BR>/////////////////////////////////////////////////////////////////////////////<BR>// The one and only CTe3App object<BR><BR>CTe3App theApp;<BR>extern "C" __declspec(dllexport) double CalTax(double *SPay)<BR>{<BR> double TempDlu;<BR> TempDlu=*SPay-880;<BR> if (TempDlu<=0.00)<BR> { <BR> return *SPay;<BR> }<BR> if ((TempDlu>0.0)&&(TempDlu<=500.00))<BR> {<BR> TempDlu=TempDlu*0.05;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> if ((TempDlu>500)&&(TempDlu<=2000))<BR> {<BR> TempDlu=TempDlu*0.10-25;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> if ((TempDlu>2000)&&(TempDlu<=5000))<BR> {<BR> TempDlu=TempDlu*0.15-125;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> if ((TempDlu>5000)&&(TempDlu<=20000))<BR> {<BR> TempDlu=TempDlu*0.20-375;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> if ((TempDlu>20000)&&(TempDlu<=40000))<BR> {<BR> TempDlu=TempDlu*0.25-1375;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> if ((TempDlu>40000)&&(TempDlu<=60000))<BR> {<BR> TempDlu=TempDlu*0.30-3373;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> if ((TempDlu>60000)&&(TempDlu<=80000))<BR> {<BR> TempDlu=TempDlu*0.35-6375;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> if ((TempDlu>80000)&&(TempDlu<=100000))<BR> {<BR> TempDlu=TempDlu*0.40-10375;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> if (TempDlu>100000)<BR> {<BR> TempDlu=TempDlu*0.45-15375;<BR> *SPay=*SPay-TempDlu;<BR> return *SPay;<BR> }<BR> return 0.00;<BR>}<BR> 在vc中的另一个工程中引用可以,但在vb中引用我不会,请各位高手赐教,对了,我曾试过在vb引用中引用,但不让引用,象声明传统的dll时引用也不行,虽然我已经将它拷贝到windows目录下,还是不行,请告诉我为什么,谢谢了!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:流水子妃 回复日期:2003-01-15 19:03:04
<br>内容:对了,我在vb中曾试图这样引用:<BR>Declare Function CalTax Lib "Te3.dll" (d As Double) As Double<BR>调用代码是:<BR>Dim a As Double<BR>Dim i As Double<BR>i = 100.01<BR>a = CalTax(i)<BR>在运行该代码时,总是提醒我"dll调用约定错误"<BR>请问为什么?<BR><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>
回复者:dr0 回复日期:2003-01-15 19:38:42
<br>内容:extern "C" __declspec(dllexport) double __stdcall CalTax(double *SPay)<BR>// try __stdcall
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:流水子妃 回复日期:2003-01-16 08:31:44
<br>内容:呵呵,谢谢楼上的给俺答复,但是还有一个问题,我在试过你给的方法后,是不再提醒“dll调用约定错误”了,现在的提示是“无法找到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>
<font color=red>答案被接受</font><br>回复者:bird 回复日期:2003-01-16 08:44:15
<br>内容:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=25074&forum_id=<BR><BR>对你会有所帮助的!
<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 + -