У меня есть статическая библиотека. В этой библиотеке определена следующая функция
int WriteData(LPTSTR s)
Пример для вызова функции:
LPTSTR s = (LPTSTR) L"Test Data";
int n = WriteData(s);
WriteData возвращает 0 в случае успеха и -1 в случае неудачи.
Я пишу динамическую DLL для экспорта этой функции.
int TestFun(LPTSTR lpData)
{
return WriteData(lpData);
}
Результат тестового приложения C ++
LPTSTR s = (LPTSTR) L"Test Data";
TestFun(s); //OK return 0
LPTSTR s = (LPTSTR) "Test Data";
TestFun(s); //Fail return -1
Я должен вызвать его из приложения C #. Я предполагаю, что моя подпись DLL-Import будет такой:
[DllImport("Test.dll")]
private static extern int TestFun(String s);
Мой вопрос очень простой Как я могу вызвать его из .Net? Как видите, у меня есть контроль над
TestFun(LPTSTR lpData)
, но не над
WriteData(LPTSTR s)
. Спасибо всем за их вклад. Пока застрял на кастинге. Я думаю, что моя проблема будет решена, когда я смогу принять ввод от пользователя и написать 2 строки для преобразования вместо следующей строки.
LPTSTR s = (LPTSTR) L"Test Data"); //<= How can ii take input from user and
TestFun(s); //OK return 0