ошибка C2733, вторая C связь перегруженной функции 'function' не разрешена - PullRequest
13 голосов
/ 20 октября 2011

Я пытаюсь скомпилировать старый проект cpp MFC в Visual Studio 2010 pro.

Он использует dll, скомпилированную с использованием Labview, и я добавляю эту информацию, потому что я не знаю, что вызывает сообщение об ошибке ..

Сообщения об ошибках отображаются на нескольких функциях, все с одним и тем же типом ошибки.

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

имя функции включает в себя: «StrCatW», «StrCmpNW», «StrCmpW», «StrCpyNW» и «StrCpyW»

Я нашел похожий случай в Интернете.

Хотя предложение в ссылке не помогло в моем случае, и я все еще вижу те же сообщения об ошибках.

Заранее спасибо всем, кто пытается помочь.

1 Ответ

15 голосов
/ 20 октября 2011

У меня нет опыта работы с MFC, в любом случае я постараюсь ответить. Такое сообщение об ошибке появляется при объявлении функции extern "C" с другим набором параметров. Например:

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

В вашем случае эти две декларации, вероятно, связаны с char*:

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

Попробуйте отключить поддержку Unicode в своем решении: я думаю, если dll действительно старая, она каким-то образом объявляет StrCatW с char* аргументами, что противоречит некоторому другому объявлению.

Если это не поможет, включите предварительно обработанный вывод (насколько я помню, переключатель компилятора /E) - он выведет очень большой файл, поэтому поищите в нем StrCatW, возможно, он даст вам некоторая подсказка о том, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...