Я успешно обновил приложение MFC, которое было скомпилировано со старой версией Developer Studio, до Visual Studio 2008. Потребовалось очень небольшое количество изменений из-за серьезных изменений в MFC. Теперь, когда все работает, я хотел бы сделать следующий шаг и скомпилировать решение с помощью /clr
.
Для этого я нашел полезную информацию на веб-сайте MSDN:
Вот шаги, которые я предпринял:
- Установите Runtime Library на Многопоточная отладочная DLL (/MDd).
- Установите Использование MFC на Использование MFC в общей библиотеке DLL .
Однако из-за этого я не могу связать проект:
Ссылка на afxData
больше не может быть разрешена; каким-то образом afxData
виден только при статической привязке к MFC. В моем коде у меня есть следующее объявление:
extern AFX_DATA AUX_DATA afxData;
, которая прекрасно работает со статически связанной версией MFC.
Ссылки на _afxThreadState
и _afxWinState
также не могут быть разрешены.
Вот полные сообщения об ошибках:
error LNK2001: unresolved external symbol "struct AUX_DATA afxData" (?afxData@@3UAUX_DATA@@A)
error LNK2001: unresolved external symbol "class CThreadLocal<class _AFX_THREAD_STATE> _afxThreadState" (?_afxThreadState@@3V?$CThreadLocal@V_AFX_THREAD_STATE@@@@A)
error LNK2001: unresolved external symbol "class CProcessLocal<class _AFX_WIN_STATE> _afxWinState" (?_afxWinState@@3V?$CProcessLocal@V_AFX_WIN_STATE@@@@A)
в случае, если это может быть связано с именем искажения ...
Итак, что я могу сделать, чтобы динамически связываться с MFC, но все же ссылаться на afxData
, _afxThreadState
и _afxWinState
?