Você recebe um erro LNK4197 na versão de 64 bits do compilador Visual C++

O suporte para o Windows Server 2003 termina em 14 de julho de 2015.

A Microsoft terminou o suporte para o Windows Server 2003 em 14 de julho de 2015. Esta alteração afetou as suas atualizações de software e opções de segurança. Saiba o que isto significa para você e como permanecer protegido.

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 835326
Sumário
Quando você cria uma DLL usando a versão de 64 bits do compilador do Microsoft Visual C++ e do vinculador, você pode receber vinculador número do erro LNK4197 se uma função tiver sido declarada para exportação mais de uma vez.
Sintomas
A saída do vinculador pode ser semelhante à seguinte:
C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll  Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification   Creating library Sample.lib and object Sample.exp 
Causa
O vinculador de número do erro LNK4197 é gerado quando uma função foi declarada para exportação mais de uma vez. Uma função é declarada para exportação em uma das seguintes maneiras:
  • A função é declarada usando a palavra-chave __declspec(dllexport) em seu arquivo de origem C:
    __declspec(dllexport) int DllSample() {   return 42;}
  • A função é declarada usando um arquivo de definição de módulo (.def):
    EXPORTS   DllSample
Este erro vinculador pode ocorrer com mais freqüência quando o a palavra-chave __declspec(dllexport) e um arquivo .def são usados para definir o mesmo nome de função em uma .dll projeto.
Resolução
Para resolver esse comportamento, defina funções exportadas somente uma vez, usando a palavra-chave __declspec(dllexport) ou usando um arquivo .DEF. Não use ambos os métodos.
Situação
Esse comportamento é por design.
Mais Informações
Declarar uma função de exportação mais de uma vez pode não produzir o erro de vinculador que é descrito na seção "Sintomas" deste artigo em versões de 32 bits do compilador C++ do Microsoft Windows e do vinculador. No entanto, a Microsoft recomenda que você definir a função exportações apenas uma vez em versões 32 bits e 64 bits do Windows C++ compilador e vinculador.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 835326 - Última Revisão: 03/01/2004 17:14:57 - Revisão: 1.1

Microsoft Windows Server 2003 Driver Development Kit (DDK), Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Datacenter x64 Edition

  • kbmt kbddk kbprb KB835326 KbMtpt
Comentários