Tôi đã có một DLL không được quản lý C++ mà tôi cần gọi từ một ứng dụng Windows Mobile C#.Chuyển chuỗi C# vào một DLL C không được quản lý trong Windows Mobile
Tôi đã có trình bao bọc C# và nó hoạt động độc đáo trên máy tính để bàn. Tôi có thể gọi các hàm DLL từ một chương trình C# trên máy tính để bàn và truyền các chuỗi xung quanh mà không có vấn đề gì.
Tuy nhiên, khi tôi biên dịch lib và trình bao bọc cho nền tảng di động, tôi gặp lỗi trong dòng DllImport nói rằng CharSet.ANSI không được nhận dạng. Các tùy chọn duy nhất tôi được phép viết là CharSet.Auto và CharSet.Unicode.
Vấn đề là, bất kể cài đặt này, các chuỗi được nhận trong các hàm C++ là các chuỗi char rộng và không phải là các chuỗi ký tự đơn giản mà chúng mong đợi.
Chúng ta có thể sử dụng wcstombs() để dịch tất cả các chuỗi vào đầu mỗi C++ chức năng, nhưng tôi không muốn thay đổi lib đến mức độ như vậy ...
Có cách nào để sửa chữa marshalling giữa C# và C hoạt động với .NET Compact Framework?
[Social.msdn] (http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/4aed0776-638a-4fde-ad61-e2462b39a961) nói không :( – GSerg