Вторая связь C в shobjidl.h - PullRequest
       39

Вторая связь C в shobjidl.h

0 голосов
/ 03 февраля 2012

В настоящее время я перемещаю проект C ++ из VS6 в VS2008, но я столкнулся со следующей ошибкой для многих функций в shobjidl.h

error C2733: second C linkage of overloaded function 'HWND_UserMarshal' not allowed c:\program files\microsoft sdks\windows\v6.0a\include\shobjidl.h    28830

Это касается не только HWND_UserMarshall, но и других функций.в этом заголовке, например HWND_UserSize, HWND_UserFree и HWND_UserFree64.

Я понимаю, что эта ошибка возникает, когда функция extern "C" объявляется с другим набором параметров, однако это происходит в заголовке SDK, а не в одном.что я могу изменить.

Есть ли у кого-нибудь предложения о том, какими должны быть мои дальнейшие действия?

РЕДАКТИРОВАТЬ: заголовок является заголовком Microsoft и в верхней части содержит следующие комментарии

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0499 */
/* Compiler settings for shobjidl.idl:
    Oicf, W1, Zp8, env=Win32 (32b run)
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING(  )

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

К сожалению, я не знаком с этим заголовком или этими функциями. Тем не менее, я подозреваю, что есть макросы C, предназначенные для управления тем, какие функции видны вам на основе определений препроцессора. И я подозреваю, что вы каким-то образом определили (или не определили) символы препроцессора таким образом, что вы получаете повторяющиеся определения функций.

Не зная заголовка, я не могу порекомендовать, что делать, чтобы получить только те функции, которые вы хотите. Вероятно, я бы начал с прочтения документации, просмотра конфигурации аналогичных продуктов и чтения самого файла заголовка.

1 голос
/ 03 февраля 2012

Эти заголовки генерируются из файла IDL? Если это так, вам, вероятно, нужно заново сгенерировать их, используя инструмент, совместимый с VS2008. Например, если вы используете ORT TAO, вы должны загрузить последнюю версию (или версию 2008 года) и запустить инструмент:

tao_idl -Cw -GT shobjidl.idl

Использование соответствующих флагов и путей.

РЕДАКТИРОВАТЬ : Из вашего обновления кажется, что вы должны создать этот файл. MIDL - это компилятор Microsoft IDL. Проверьте документы на MSDN для информации о компиляторе: http://msdn.microsoft.com/en-us/library/windows/desktop/aa367300%28v=vs.85%29.aspx

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