⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_30707.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:30707 发表者:八爪鱼 发表日期:2003-02-25 18:02:49
<br>主题:BC中的far pascal到了VC中应该是什么?
<br>内容:我需要改写一个老系统,该系统原为borland c++ 5.0开发的,现用VC6.0开发。<BR>原系统中调用某DLL的时候这样申明函数:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef DWORD far pascal (*LPRC_SCANLINE)(BYTE*,char*);//BC<BR>这中间有far pascal这两个关键字,我不是很理解意思,而在VC中是不能照上面这样申明的,请问它表示的是什么意思,而我在VC中应该怎么样写?<BR>如能帮在下解决这个问题,感激不尽!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:sodic2 回复日期:2003-02-25 22:49:25
<br>内容:只好帮你UP。<BR><BR>不如一一试试 __stdcall与__cdecl
<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>回复者:Sam 回复日期:2003-02-25 23:08:52
<br>内容:你可以用WINAPI试一试<BR>在c语言中函数的参数传递是由右到左(如:Func(int a,int b)<BR>它在调用函数时是先Push参数b再Push参数a<BR>而其他语言的参数传递是由左到右,以以上函数为例,在Pascal语言中是先Push参数a再Push参数b,所以在Dll调用时会出现参数传递的不一致,这时就必须把C语言中的参数传递方向强制转换成其他语言一样的好像(far pascal关键字就是起到这种强制作用,在VC中可以用WINAPI来取带pascal关键字)。<BR><BR>&nbsp;&nbsp; 献丑了!!!
<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-02-26 10:08:20
<br>内容:Sam 说的好象很有道理,但是,问题依旧没有解决,WINAPI表示的意思就是__far __pascal<BR>但是我试过,在VC中如果这样申明:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typedef DWORD __far __pascal (*LPRC_SCANLINE)(BYTE*,char*);//VC<BR>将会有编译错误,信息如下:<BR>error C4226: nonstandard extension used : '__far' is an obsolete keyword<BR>error C4226: nonstandard extension used : '__pascal' is an obsolete keyword<BR>那么请问,我该如何写才能以PASCAL形式访问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>
回复者:八爪鱼 回复日期:2003-02-26 12:32:51
<br>内容:我知道了,原来确实是用WINAPI不过要这样申明:<BR>&nbsp;&nbsp;&nbsp;&nbsp; typedef DWORD (FAR WINAPI *LPRC_SCANLINE)(BYTE*,char*);//VC<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 + -