Я получил dll c ++ / cli для связи с dll vc ++, но при попытке сделать это со статической версией lib vc ++ возникает куча ошибок компоновщика.Я хочу использовать static, поэтому мне не нужно копировать все остальные файлы dll vc ++ в мой основной проект c #, который использует c ++ / cli dll.
Библиотека vc ++ имеет следующие свойства:* встроенный vs2008* Статическая библиотека* использует MFC в статической библиотеке* Нет поддержки общеязыкового языка
библиотека c ++ / cli имеет следующие свойства:* встроенный vs2010* Динамическая библиотека* Использование MFC в общей DLL* Common Language Runtime Support* linker-> input содержит файл vc ++ lib
Я пытался связать его с vc ++ lib после его сборки в vs2010, но это не помогло.
Так я получаю около 90 ошибок LNK2005, подобных этимиз nafxcwd.lib:
1> nafxcwd.lib (dlgprop.obj): ошибка LNK2005: «public: struct _PROPSHEETPAGEA & __thiscall CPropertyPage :: GetPSP (void)» (? GetPSP @ CPropertyAA @ @)XZ) уже определено в mfc100d.lib (mfc100d.dll)
, затем примерно 30 из них: 1> libcmtd.lib (sprintf.obj): ошибка LNK2005: _sprintf уже определен в msvcrtd.lib (MSVCR100D.dll)
затем три предупреждения LNK4098:
ССЫЛКА: предупреждение LNK4098: defaultlib 'msvcrtd.lib' конфликтует с использованием других библиотек;используйте / NODEFAULTLIB: библиотека 1> ССЫЛКА: предупреждение LNK4098: defaultlib 'nafxcwd.lib' конфликтует с использованием других библиотек;use / NODEFAULTLIB: библиотека 1> ССЫЛКА: предупреждение LNK4098: defaultlib 'libcmtd.lib' конфликтует с использованием других библиотек;используйте / NODEFAULTLIB: библиотека
, тогда я получаю эту последнюю ошибку: libcmtd.lib (crt0.obj): ошибка LNK2019: неразрешенный внешний символ главная ссылка в функции _ _tmainCRTStartup
Я посмотрел предупреждение LNK4098 на msdn, и было решено добавить конфликтующие библиотеки к записи IgnoreSpecific Default library в настройках ввода компоновщика, но это не помогло.
Спасибо,Alex