Что означают определения функции компоновщика? - PullRequest
0 голосов
/ 11 ноября 2009

У нас ошибка компоновщика при обновлении SDK.

Заглянув внутрь файла .lib, мы можем увидеть, что старое определение функции было:

?SetupMOSSDK@@YAEPBGKPBUMOSGUID@@K@Z

Однако новый файл .lib имеет немного другое определение той же функции:

?SetupMOSSDK@@YAEPB_WKPBUMOSGUID@@K@Z

Изменение - _W вместо G.

Что я не знаю, так это то, что на самом деле представляет эта строка. Я предполагаю, что компилятор указывает свою конфигурацию времени компиляции в строке. Я прав?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2009

Попробуйте использовать undname.exe в вашей директории vc \ bin. У меня это не сработало, но, возможно, вы используете другую версию Visual Studio - я использую 2008.

0 голосов
/ 11 ноября 2009

Компилятор указывает параметры и тип возвращаемого значения функции. Таким образом, функция в файле lib имеет набор параметров, отличный от определения функции в используемом вами файле .h.

0 голосов
/ 11 ноября 2009

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

...