Russian Qt Forum

Программирование => С/C++ => Тема начата: freestyler от Октябрь 17, 2011, 19:52



Название: Возврат значения из DLL
Отправлено: freestyler от Октябрь 17, 2011, 19:52
Microsoft Visual Studio 2010.

Есть DLL на C++. Формочка на VB.NET


DLL:
__declspec(dllexport) char RETURN()
{
   char a='R';
   return a;
}


форма:
Declare Auto Function RETURN Lib "RETURN.dll" () As Char

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Static L As Char
        L = CreatePrinter()
        Me.Label1.Text = L
End Sub



При нажатии на кнопку Button1 на Label1 выводится не "R", а иероглиф. Именно иероглиф. Не похож на "несоответствие кодировок", однако не исключаю такой возможности. Что выводится приложил рисунком.


Ай нид хелп! :)

Спасибо!!


Название: Re: Возврат значения из DLL
Отправлено: Nimbus от Октябрь 18, 2011, 04:20
>L = CreatePrinter()
>Me.Label1.Text = L
И где же вызов RETURN ???
Или я в VB не шарю совсем?:)
А насчёт кодировок... Ты собирал проект DLL в unicode-кодировке? Потому что в .net ЕМНИП всё символы в юникоде. И ещё попробуй всё-таки получить из функции Byte. Потому что в си нет различия между числовыми литералами и символьными. Если вернёт 82 (ascii-код символа R), то всё ок. Надо будет написать
L = Chr(RETURN())