Statik bir kütüphanem var. Bu kütüphane, aşağıdaki fonksiyon işlevini çağırmak üzereC++ dizelerinde L öneki L
int WriteData(LPTSTR s)
örnek tanımlanmış
LPTSTR s = (LPTSTR) L"Test Data";
int n = WriteData(s);
Başarı durumunda 0 ve -1 geri WriteData olup.
Bu işlevi vermek için dinamik bir DLL yazıyorum.
int TestFun(LPTSTR lpData)
{
return WriteData(lpData);
}
A C++ test uygulaması sonucu
LPTSTR s = (LPTSTR) L"Test Data";
TestFun(s); //OK return 0
LPTSTR s = (LPTSTR) "Test Data";
TestFun(s); //Fail return -1
Bir C# uygulamasından onu aramak zorunda. Benim DLL İthalat imzası olacağını varsayalım:
[DllImport("Test.dll")]
private static extern int TestFun(String s);
sorum i .NET onu aramak nasıl çok basit? Gördüğünüz gibi i
TestFun(LPTSTR lpData)
üzerindeki kontrolünü ama onların girişi için hiçbir kontrole
WriteData(LPTSTR s)
üzerinde Herkese teşekkürler var. Şimdiye kadar döküm için sıkışıp kaldım. Kullanıcıdan girdi alabildiğimde ve aşağıdaki satırın yerine döküm için 2 satır yazdığımda sorunum çözülecek.
LPTSTR s = (LPTSTR) L"Test Data"); //<= How can ii take input from user and
TestFun(s); //OK return 0
TCHAR'ın kullanımı 10 yıl önce anlamlıdır. Artık desteklemeniz gereken bir Unicode işletim sistemi yok. Her şeyi wchar_t yapın ve devam edin. –
Bunu nasıl yapabilirim? – Manjoor
lpData'yı WriteData işlevine geçirdiğinizde ne işe yaramaz? – harper