Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > компиляция в коммандной строке


Автор: informn 25.2.2006, 20:22
вот это прекрасно компилится из среды (с опцией Use MFC in a Shared DLL.)

Код

// test.cpp : Defines the entry point for the console application.
//
#define UNICODE
#define _UNICODE

//#include "stdafx.h"
#include "CString"

#include <iostream>
#include <tchar.h>
#include "afxdb.h" 
#include "odbcinst.h"
#include "comutil.h"
#include "conio.h"


int _tmain(int argc, _TCHAR* argv[])
{




    CString s;
    CDatabase database;

    return 0;
}


В командной строке это не компилится (cl /MD test.cpp >> test).
Если же удалить строки с
Код

CString s;
    CDatabase database;

то всё отлично компилится из коммандной строки.


сообщение об ошибке в командной строке
Код

/out:test.exe 
test.obj 
uafxcw.lib(thrdcore.obj) : error LNK2019: unresolved external symbol __endthreadex referenced in function "void __stdcall AfxEndThread(unsigned int,int)" (?AfxEndThread@@YGXIH@Z)
uafxcw.lib(thrdcore.obj) : error LNK2019: unresolved external symbol __beginthreadex referenced in function "public: int __thiscall CWinThread::CreateThread(unsigned long,unsigned int,struct _SECURITY_ATTRIBUTES *)" (?CreateThread@CWinThread@@QAEHKIPAU_SECURITY_ATTRIBUTES@@@Z)
test.exe : fatal error LNK1120: 2 unresolved externals
 

В чём проблемы?

Автор: Earnest 26.2.2006, 09:21
Не некомпилится, а не собирается...
Не хватает какой-то библиотеки или какой-то опции линкера. Чтобы узнать, какой, посмотри в настройках проекта (где все собирается) опции линкера.

Автор: informn 26.2.2006, 10:04
Вот опции с/с++
Код

/O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_AFXDLL" /FD /EHsc /MD /GS /Yu"stdafx.h" /Fp"Release/test.pch" /Fo"Release/" /Fd"Release/vc70.pdb" /W3 
/nologo /c /Wp64 /Zi /TP


Опции линкера
Код

/OUT:"Release/test.exe" /INCREMENTAL:NO /NOLOGO /DEBUG /PDB:"Release/test.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /MACHINE:X86


вот такой запуск:
Код

cl /FD /EHsc /MD /GS /W3 /nologo /Wp64 /Zi /TP test.cpp /DEBUG /OPT:REF /OPT:ICF


пишет что неизвестная опция компилятора /OP /OT /O
и не собирает.

Автор: Earnest 26.2.2006, 18:58
Естественно, это ведь опции линкера, а не компилятора. Смотрим в MSDN "cl->passing options to linker":

Цитата

/link linkeroptions
where:

linkeroptions
The linker option or options to be passed to the linker.

Remarks
This option passes one or more linker options to the linker. The /link option and its linker options must appear after any file names and CL options. A space is required between /link and linkeroptions. See Setting Linker Options for a complete list.

Автор: fudz1k 17.3.2007, 02:30
наверное не хватает windows.h

Автор: Fazil6 17.3.2007, 03:22
fudz1k, ты вообще где эту тему откопал? 
Цитата(fudz1k @  17.3.2007,  01:30 Найти цитируемый пост)
наверное не хватает windows.h

прикольное заявление...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)