Префикс L для строк в C ++

У меня есть статическая библиотека. В этой библиотеке определена следующая функция

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
7
задан Manjoor 6 November 2010 в 10:55
поделиться