Проходя мимо а VB.NET структура со строкой фиксированной длины в структуру C++
Привет,
Мы преобразуем графическое приложение VB6 GUI, которое использует C++ для своего бэкенда, в VB.net передний конец. Мы также используем C++/CLI в качестве интерфейса.
In the C++ the original code was passed from VB6 as Public Type Npat_Stat Chan As Byte Con_stat As Byte Con_req As Byte Cur_serv As Byte Num_servs As Byte Server_id As String * 33 Last_Error As String * 51 Extra_error As String * 51 End Type
Где в подпрограмме C++ был передан следующий параметр:
STDAPI_(short) Npat_Status(struct com_status *cs)
struct com_status { unsigned char chan; // Set channel 0=temp, 1=perm1, 2=perm2 unsigned char con_stat; // Connection status unsigned char con_req; // Connection control byte unsigned char cur_serv; // Which server is being tried unsigned char num_servs; // Number of servers to try char server_id[33]; // Server details char last_error[51]; // Last error text char extra_error[51]; // Extended error info };
Так что в VB.net у меня есть:
Public Structure Npat_Stat Public Chan As Byte Public Con_stat As Byte Public Con_req As Byte Public Cur_serv As Byte Public Num_servs As Byte <VBFixedString(33)> Public Server_id As String <VBFixedString(51)> Public Last_Error As String <VBFixedString(51)> Public Extra_error As String End Structure
Поэтому я изо всех сил пытаюсь понять, как лучше всего подойти к этой проблеме. Я могу создать класс ссылки, чтобы держать структуру и передать ее от VB.net как следующие:
int Comms::O_Status(O_Stat ^cs)
а затем каким-то образом преобразовать ^cs, переданный в com_status *cs, чтобы перейти на исходную процедуру из этого интерфейсного слоя?
Будет ли строка фиксированной длины также вызывать проблемы?
Любые указатели на лучший способ сделать это было бы здорово, так как я новичок в C++, был на курсе и попросил помочь в этой части проекта, но я VB6/VB.Net bod, а не C++
Спасибо
Мартин
Что я уже пробовал:
Чтение онлайн-статей MS C++/CLI для получения примеров