我有一个别人写的16位程序,怎样用比较简单的方法(尽量少更改源代码)来将次程序编译为32位程序.多谢!!!#include  <windows.h>
#include <string.h>
#include <stdio.h>#define EXPORTAPI _far _pascal _export _loadds #define MM 7.092
#define cvt(x) ( (int)((x) * MM) )#define X_START (0 + cvt(10))
#define Y_START (7)
#define FontWidthE 15
#define FontWidthC 30#define  PART3X  80
#define  PART3Y      504
#define LINE 43
#define  PART4X  30
#define  PART4Y      (PART3Y + LINE * 14 - 10)……
编译后,出错信息::\temp\new\print.c(46) : error C4226: nonstandard extension used : '_far' is an obsolete keyword
d:\temp\new\print.c(46) : error C4226: nonstandard extension used : '_pascal' is an obsolete keyword程序中还用到了_fstrlen,后面编译时会出现warning:
void _far _pascal _loadds print_to(int x,int y,LPSTR ptr)
{
  if ( (X_START + x) > 0 ) 
TextOut(ghPrintDC,X_START + x,Y_START + y, ptr, _fstrlen(ptr));
else
TextOut(ghPrintDC, 1,Y_START + y, ptr, _fstrlen(ptr));}是不是这里用到的_fstrlen是16位函数,它如何改为32位函数呢?

解决方案 »

  1.   

    这里用到的_fstrlen是16位函数,它如何改为32位函数呢?
    strlen()
      

  2.   

    #define EXPORTAPI _far _pascal _export _loadds 
    这一行什么意思?该如何修改?
      

  3.   

    #define EXPORTAPI __declspec(dllexport) WINAPI// or #define EXPORTAPI __declspec(dllexport) __stdcall
      

  4.   

    又改了一下,编译通过,Print.obj - 0 error(s), 0 warning(s)
    但是运行的时候出错:
    --------------------Configuration: Print - Win32 Debug--------------------
    Linking...
       Creating library Debug/Print.lib and object Debug/Print.exp
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/Print.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
      

  5.   

    弱弱地问:
    请问_loadds是什么意思呀?int _far _pascal  _loadds  getgnLineLength( hDC, width )
    HDC hDC;
    int width;
    {
    RECT clipBox;
    GetClipBox ( hDC, ( LPRECT )&clipBox );
    return max( ( ( (clipBox.right - clipBox.left) / width) - 2 ), 0);
    }