Tôi thực sự cần sự hiểu biết sâu hơn về cách thiết lập mọi thứ để có được sự tương tác thanh lịch giữa các cơ sở mã C + + và C# của tôi. Điều tôi muốn đạt được là một trình soạn thảo trong trò chơi được viết bằng C# cho công cụ trò chơi của tôi (C++/DX). Để làm như vậy, tôi cho VS xây dựng engine của tôi như một dll C++ với một số chức năng bổ sung (mã không được quản lý) để truy cập chức năng cần thiết của động cơ của tôi từ cơ sở mã trình soạn thảo C#. Càng xa càng tốt.Làm thế nào để xử lý tương tác dự án C# - C++ đúng cách?
Điều đầu tiên làm tôi lo ngại là tôi sẽ xây dựng dll với hỗ trợ CLR. Nếu không, C# không chấp nhận dll vì lý do nào đó. Nó thậm chí không cho phép tôi thêm nó vào tài nguyên ("Tham chiếu đến 'C: \ Users ... \ frame_work \ Test \ frame_workd.dll' không thể được thêm vào. Vui lòng đảm bảo rằng tệp có thể truy cập và rằng nó là một thành phần hợp lệ hoặc COM. ").
Và khi tôi xây dựng dll với hỗ trợ CLR và thêm nó vào các tham chiếu trong C#, xây dựng lại mà không cần hỗ trợ CLR, khởi động trình soạn thảo của tôi và thực hiện cuộc gọi hàm từ dll thì tôi nhận được một ngoại lệ HRESULT: 0x8007007E. Tôi đã tìm kiếm nó nhưng điều duy nhất tôi tìm thấy phải làm với các phụ thuộc nhưng điều đó không phù hợp với cảnh báo tôi nhận được khi thêm dll vào tài nguyên.
Điểm khác là tôi luôn phải chuyển đổi loại cấu hình giữa ứng dụng (.exe) và dll. trong VS C++ tùy thuộc vào việc tôi muốn chạy động cơ của tôi trực tiếp hoặc từ trình soạn thảo và mỗi khi dự án hoàn thành được xây dựng hoàn toàn mới.
Vì vậy, ai đó có thể giải thích cho tôi cách tổ chức đúng cách này? Và những gì có thể là một lý do có thể tại sao C# muốn dll được biên dịch với sự hỗ trợ CLR?
Cảm ơn các bạn/cô gái.
Mọi thứ hoạt động tốt ngay bây giờ. Sai lầm duy nhất là một thực tế là tôi đã thêm dll vào tài liệu tham khảo, nghĩa là địa điểm sai. Nó bây giờ làm việc mà không có sự hỗ trợ CLR. Cảm ơn bạn đã trả lời của bạn. @Spence – user1042568
Có khả năng buộc api của bạn được quản lý không phải lúc nào cũng là một lựa chọn. – Spence