2011-10-20 5 views
12

Estoy tratando de compilar el viejo proyecto cpp MFC en Visual Studio 2010 pro.error C2733 segundo enlace C de la función 'función' sobrecargada no permitido

Utiliza DLL que se compila utilizando Labview, y añado esta información porque no sé qué está causando el mensaje de error ..

Los mensajes de error aparecen en múltiples funciones, todo mismo tipo de error .

error C2733: second C linkage of overloaded function 'function name' not allowed. 

el 'nombre de la función' incluye: 'StrCatW', 'StrCmpNW', 'StrCmpW', 'StrCpyNW', y 'StrCpyW'

me encontré con un similar case en la web.

Aunque la sugerencia en el enlace no resolvió en mi caso y todavía veo los mismos mensajes de error.

Gracias de antemano para cualquier persona que intente ayudar.

+1

Parece que las funciones 'StrCatW', 'StrCmpNW', etc. se vinculan más de una vez o se incluyen en más de un archivo * sin * que se declare como' en línea'. –

+1

@ThomasMatthews El error no es decir que hay más de una definición de la misma función, sino que hay más de una sobrecarga con el mismo nombre. El problema en este caso es que debido a la vinculación C, el cambio de nombre de nombres está deshabilitado, y no puede tener que símbolos con el mismo nombre que hace referencia a diferentes funciones. –

Respuesta

14

No tengo experiencia con MFC, de todos modos, intentaré responder. Este mensaje de error aparece cuando se declara una función extern "C" con un conjunto diferente de parámetros. Por ejemplo:

extern "C" int myfunc(int); 
extern "C" int myfunc(char); 

En su caso, las dos declaraciones están probablemente relacionados con char*:

extern "C" char* StrCatW(char*, char*); 
extern "C" wchar_t* StrCatW(wchar_t*, wchar_t*); 

intente desactivar la compatibilidad con Unicode en su solución: supongo, si el DLL es muy viejo, se de alguna manera declara StrCatW con char* argumentos, en conflicto con alguna otra declaración.

Si eso no ayuda, activar la salida preprocesado (interruptor /E compilador, en la medida de lo que recuerdo) - que muestre un archivo muy grande voluntad, a fin de buscar StrCatW en ella, tal vez se le dará alguna pista sobre Que esta pasando.

+0

gracias por las sugerencias. Desactivé la compatibilidad con Unicode y no funcionó, así que voy a probar la salida preprocesada y ver qué está sucediendo. –

+0

Hola. Cuando enciendo el preproceso (/ P en VS 2010), veo un error LINK pidiendo stdafx.obj, que es el archivo obj de la primera cpp en mi lista de archivos fuente. Encontré una explicación de error de MSDN que parece relacionada con lo que sugeriste. Http://msdn.microsoft.com/en-us/library/5z9es6ec(v=vs.v.71).aspx –

+0

Resolví el problema simplemente comentando desde archivo de encabezado las funciones en la lista de error 'segundo enlace C' –

Cuestiones relacionadas