error LNK2005 (vs6)
, нуб вопрос
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.82] |
|
|
Правила раздела Visual C++ / MFC / WTL (далее Раздела)
FAQ Раздела
Обновления для FAQ Раздела
Поиск по Разделу
MSDN Library Online
error LNK2005 (vs6)
, нуб вопрос
|
Сообщ.
#1
,
|
|
|
|
Написал программульку которая чего-то там считает(физику разную), основываясь на библиотеках некоего CLHep (может кто физик- о такой штуке слышал).
В console application она у меня все считает. Потом решил попробовать Гуи добавить...в MFC я полный нуб, поэтому пошел на firststeps и взял из первых шагов в разделе Visual C++ примерчик, который кнопочки рисует. Ну долго не думая, добавил этот примерчик в мой воркспейс и в нажатии на кнопку просто вызвал мою прогу ![]() ![]() void CMyButton::OnLButtonDblClk(UINT, CPoint) { Generate::Run1(mean,deviat,nEvents,nBins,maxQ,Qinv_user,chiSq,Corr); // вызов моей рутины MoveWindow(CRect(120,100,220,150),TRUE);// то что предлагают сделать в примере на firststeps } Ну и понятное дело выскочила куча ошибок LNK2005(куда ж без них) типа вот таких ![]() ![]() LIBCMTD.lib(dbgheap.obj) : error LNK2005: _free already defined in msvcrtd.lib(MSVCRTD.dll) libcpmtd.lib(iostream.obj) : error LNK2005: "public: __thiscall std::ios_base::Init::~Init(void)" (??1Init@ios_base@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP60D.dll) LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj) svcrtd.lib(MSVCRTD.dll) : error LNK2005: __setmbcp already defined in LIBCMTD.lib(mbctype.obj) Ну я по колесу постучал, дворники протер (мультитритед везде поставил, перебилдил, прекомпайлед хедерс убрал) а ошибки так и остались.Причем как я понимаю MSVCRTD.dll и LIBCMTD.lib лежат одна в папке windows, другая в библиотеках visual studio(поиск фарева). В чем может быть ошибка? может кто на заре своей деятельности сталкивался? или в мфц все принципиально не так делается? |
|
Сообщ.
#2
,
|
|
|
|
Update:
написал /nodefaultlib:"msvcrtd.lib" /nodefaultlib:"msvcirtd.lib" /nodefaultlib:"msvcprtd.lib"- ошибки ушли, только появились ворнинги ![]() ![]() LINK : warning LNK4049: locally defined symbol ""public: __thiscall std::_Winit::_Winit(void)" (??0_Winit@std@@QAE@XZ)" imported как это будет влиять на ход программы? |
|
Сообщ.
#3
,
|
|
|
|
Может быть есть смысл добавить GUI без использования MFC. То есть, я имею ввиду написать скелет приложения, компилировать его как win32, а все элементы вставлять с помощью CreateWindowEx. Например:
![]() ![]() #include <windows.h> LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM); char szWinName[]="MyWin"; int WINAPI WinMain(HINSTANCE hThisInst,HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode) { HWND hwnd; MSG msg; WNDCLASSEX wcl; wcl.cbSize=sizeof(WNDCLASSEX); wcl.hInstance=hThisInst; wcl.lpszClassName=szWinName; wcl.lpfnWndProc=WindowFunc; wcl.style=0; wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION); wcl.hIconSm=NULL; wcl.hCursor=LoadCursor(NULL,IDC_ARROW); wcl.lpszMenuName=NULL; wcl.cbClsExtra=0; wcl.cbWndExtra=0; wcl.hbrBackground=(HBRUSH) GetStockObject(BLACK_BRUSH); if(!RegisterClassEx(&wcl)) return 0; /*hwnd=CreateWindow(szWinName, "Title", WS_POPUP|WS_SYSMENU, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 0, 0, hThisInst, 0);*/ hwnd = CreateWindow( szWinName, "Skelet for Uchebnik", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hThisInst, NULL ); CreateWindowEx(NULL,"button","1",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,10,10,70,70,hwnd,(HMENU)100,hThisInst,NULL); CreateWindowEx(NULL,"edit", "Хрен", WS_CHILD | WS_VISIBLE | WS_BORDER , 100, 50, 200, 20, hwnd, (HMENU)111, hThisInst, NULL); ShowWindow(hwnd,nWinMode); UpdateWindow(hwnd); while(GetMessage(&msg, NULL, 0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message){ case WM_PAINT: UpdateWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, message, wParam,lParam); } return 0; } А прогу твою запихать/внедрить в этот шаблон (я имею ввиду код). Не бей, если я что-то не так понял. С похмелья туго соображаю... Добавлено в : Ну если warningi, то это уже не так страшно. Программа конечно будет запускаться, но вот будет ли работать правильно? Проверь, если все верно, то не стоит переживать... Блин, башка болит ![]() M Пользуйтесь тегом кода. Предупреждение не ставлю т.к. новичок. Подсказка в ссылке "Помощь по кодам форума" слева формы ответа. Leprecon |
|
Сообщ.
#4
,
|
|
|
|
спасибо за код, ща попробую:)
|
|
Сообщ.
#6
,
|
|
|
|
кто знает...у меня вроде конфликтовал статическая библиотека с динамическим приложением
-> отрубил библиотеки- вроде не ругается, окромя варнинга |
|
Сообщ.
#7
,
|
|
|
|
я уж где-то раньше писала, так что извините за повторение, в любом случае не вредит в dependency walker посмотрет, там "какие" и "где" библиотеки лежат. варнинги тож не дело...
|