Get rid of all of the other CPP's and modules. This is a linker error, so you should cut this down to its simplest form.
Code:
// here is MAIN.h
#ifndef MAIN_H
#define MAIN_H

#include <string>
class CNomeArquivo 
{
  std::string NomeCompleto,
            EOTOrigem,
            EOTDestino,
            DiaMesAno,
            HoraMinutoSegundo,
            Sequencia,
            Tipo;
	       
  unsigned short TAM_NOME_ARQUIVO;       

  public:

  CNomeArquivo(const std::string& Nome);
  int Consiste();	       
  
   const std::string& PegaEOTOrigem() {return EOTOrigem;};
   const std::string& PegaEOTDestino() {return EOTDestino;};
};
#endif

// MAIN.CPP
#include "main.h"

CNomeArquivo::CNomeArquivo(const std::string& Nome):  
            NomeCompleto(Nome), 
            EOTOrigem(Nome.substr(6,3)),
            EOTDestino(Nome.substr(9,3)),
            DiaMesAno(Nome.substr(18,6)),
            HoraMinutoSegundo(Nome.substr(26,6)),
            Sequencia(Nome.substr(14,2)),
            Tipo(Nome.substr(34,2)),
            TAM_NOME_ARQUIVO(35) {}

int main()
{
    CNomeArquivo C("abc123");
}
Now you have just one module to link and test. This compiles and links successfully in VC++ 6.0.

A few things though

1) if your header file contains the string class, you should include <string> in your header. As a matter of fact, any classes that your header files use should include what it uses. This way your header file can stand alone and compile. Right now, you are including string outside your header file, which makes your header file give errors if you forget to include <string> in my CPP files.

2) The header file should use the namespace names, and not rely on the enclosing CPP module to state "using namespace std". Again, for the same reasons as 1).

3) Note the use of const std::string& for the constructor parameter. This makes me able to pass "abc123" to the constructor, not just std::string types.

Regards,

Paul McKenzie