Tôi có một thư viện tĩnh. Thư viện này có các chức năng sau đây được xác địnhTiền tố L cho các chuỗi trong C++
int WriteData(LPTSTR s)
Mẫu để gọi hàm là
LPTSTR s = (LPTSTR) L"Test Data";
int n = WriteData(s);
WriteData trở lại 0 nếu thành công và -1 trên thất bại.
Tôi đang viết một DLL động để xuất chức năng này.
int TestFun(LPTSTR lpData)
{
return WriteData(lpData);
}
Một C++ kết quả ứng dụng thử nghiệm
LPTSTR s = (LPTSTR) L"Test Data";
TestFun(s); //OK return 0
LPTSTR s = (LPTSTR) "Test Data";
TestFun(s); //Fail return -1
tôi phải gọi nó là từ một ứng dụng C#. Tôi cho rằng chữ ký nhập-DLL của tôi sẽ là:
[DllImport("Test.dll")]
private static extern int TestFun(String s);
Câu hỏi của tôi rất đơn giản Làm thế nào tôi có thể gọi nó từ .Net? Như bạn thấy tôi có thể kiểm soát
TestFun(LPTSTR lpData)
nhưng không kiểm soát
WriteData(LPTSTR s)
Cảm ơn tất cả mọi người cho ý kiến của họ. Cho đến nay tôi đang mắc kẹt trên đúc. Tôi nghĩ rằng vấn đề của tôi sẽ được giải quyết khi tôi woul có thể lấy đầu vào từ người dùng và viết 2 dòng cho đúc thay cho dòng sau đây.
LPTSTR s = (LPTSTR) L"Test Data"); //<= How can ii take input from user and
TestFun(s); //OK return 0
Sử dụng TCHAR có ý nghĩa 10 năm trước. Không còn nữa, không có hệ điều hành không phải Unicode nào mà bạn phải hỗ trợ. Làm tất cả mọi thứ wchar_t và di chuyển trên. –
Tôi có thể làm điều đó bằng cách nào? – Manjoor
Điều gì 'không hoạt động' khi bạn chuyển lpData vào hàm WriteData? – harper