Tôi gặp vấn đề tương tự và không có giải pháp nào hoạt động. Vấn đề như được đăng trong OP đã đến từ bao gồm cả lớp:
class AFX_EXT_CLASS CMyClass : public CObject
{
public :
// ....
}
Đây là lớp xuất từ dll mà tôi muốn sử dụng trong bảng điều khiển exe. Nếu tôi tạo ứng dụng giao diện điều khiển là 'sử dụng mfc' trong trình hướng dẫn tạo, thì lỗi này không xảy ra nhưng tùy chọn đó dẫn đến việc tạo cấu trúc ứng dụng khác.
Dù sao thì tôi đã cố bao gồm các tiêu đề khác nhau để nó biết AFX_EXT_CLASS
, đã xác định nhưng không có gì hoạt động. Dài câu chuyện ngắn, giải pháp là chúng ta phải kích hoạt để sử dụng MFC cho các ứng dụng cho nó để hiểu được xuất khẩu MFC lớp từ dll. Làm sao chúng ta làm điều đó là bằng cách chỉnh sửa tập tin .vcproj
và chèn dòng UseOfMFC="2"
như hình dưới đây:
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="2" <-------------Insert this line here
CharacterSet="1"
Cũng #include <afx.h>
để stdafx.h (tôi bao gồm nó ở phía trên bên phải trước bao gồm đầu tiên).
Bây giờ relead, clean và xây dựng lỗi sẽ biến mất.
Không có cách nào khác để thay đổi tùy chọn này từ cài đặt dự án. Tùy chọn này khác với Thuộc tính dự án >> Thuộc tính cấu hình >> Chung >> 'Sử dụng MFC'.
Cập nhật
Các UseOfMFC="2"
lừa có thể hữu ích ở những nơi khác nhưng dường như nếu bạn chỉ #include <afx.h>
VÀ thay đổi cài đặt project properties >> General >> 'Use of MFC'
để sử dụng MFC trong dll chia sẻ, so với lỗi này sẽ biến mất. Nếu bạn không thay đổi các thiết lập sau một lỗi biên dịch sẽ xảy ra
c:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
Thay đổi này thực sự cũng không thiết lập UseOfMFC="2"
trong hồ sơ dự án, vì vậy đây là một cách đúng đắn.
Có cùng một vấn đề, đã khắc phục sự cố . –