c++ - linking erro
My program compiles OK but when linking there is some erro.
my command line is:
dmc -g -mn -L/exetype:windows main Contour mainwindow material math
object_3d parts tesselator opengl32.lib glu32.lib gdi32.lib comctl32.lib
here is the output of dmc:
main.cpp:
Contour.cpp:
mainwindow.cpp:
material.cpp:
math.cpp:
object_3d.cpp:
parts.cpp:
tesselator.cpp:
link
main+Contour+mainwindow+material+math+object_3d+parts+tesselator,,,opengl32+
glu32+gdi32+comctl32+user32+kernel32/co/noi/exetype:windows;
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
OPTLINK : Warning 148: USE16/USE32 Mismatch : DGROUP
F:\DM\BIN\..\lib\SNN.lib(winstart)
Error 83: Illegal frame on start address
OPTLINK : Warning 174: 32-bit Segments Inappropriate for 16-bit Segmented
output
main.obj(main)
Error 35: Cannot Reach TARGET from FRAME at Relative 0001FH from
Segment _TEXT
FRAME = Frame of Group FLAT 0000
TARGET = External Symbol ?RegisterWinClass GLWindow SAHPAX Z (int cdecl
GLWindow::RegisterWinClass(void *)) 09BF6H
FIXUPP Type = 32-bit Conditional JMP
--- errorlevel 2
My main.cpp looks like this:
int PASCAL WinMain( HINSTANCE this_inst, HINSTANCE prev_inst, LPSTR cmdline,
int cmdshow )
{
MSG msg;
if( !prev_inst ) {
if (!GLWindow::RegisterWinClass(this_inst)) return (FALSE);
}
GLWindow mainWindow(this_inst);
while( GetMessage( &msg, NULL, NULL, NULL ) ) {
TranslateMessage( &msg );
DispatchMessage( &msg );
}
InitCommonControls();
return( msg.wParam );
} /* WinMain */
class GLWindow looks like this:
class GLWindow {
private:
HWND m_HWnd;
HINSTANCE m_HInstance;
HDC m_HDC;
HGLRC m_HRC;
struct Layout {
LONG x, y, width, height;
} m_Layout;
static LONG FAR PASCAL MessageProc(HWND hwnd, unsigned msg,
UINT wparam, LONG lparam);
public:
GLWindow(HINSTANCE hInst);
~GLWindow();
static BOOL RegisterWinClass(HINSTANCE hInst);
void initializeWindowLayout();
void resize(LONG lparam);
void saveWindowLayout();
void enableOpenGL();
void initializeGL();
void disableOpenGL();
void display();
void reshape(int width, int height);
void drawAxes();
};
Could anybody give me a hint what this erro means and how to fix it?
Dec 17 2003
"Sean" <seanchen telus.net> wrote in message news:brqod2$r93$1 digitaldaemon.com...dmc -L/exetype:windowsexetype:windows specifies the output as a 16 bit windows app. Try exetype:nt instead. See www.digitalmars.com/ctg/ctgDefFiles.html#exetype
Dec 17 2003
It works! Thank you, Walter. "Walter" <walter digitalmars.com> дÈëÓʼþ news:brqupj$14tj$1 digitaldaemon.com..."Sean" <seanchen telus.net> wrote in message news:brqod2$r93$1 digitaldaemon.com...exetype:ntdmc -L/exetype:windowsexetype:windows specifies the output as a 16 bit windows app. Tryinstead. See www.digitalmars.com/ctg/ctgDefFiles.html#exetype
Dec 17 2003








"Sean" <seanchen telus.net>