Member 12271328 Ответов: 1

Как передать структуру struct из библиотеки DLL C# в C++ ?


public struct person
{
    string name;
    string age;
    string job;
}

public struct management
{
   Person employee;
   int count_of_employee;
}

public interface ICallmyClass

{
   void Test();
   management[] GetData
   {
     get;
   }
}

public class myclass : ICallmyClass
{
  management[] st;
  int Count = 0;
  
  public management[] GetData
  { 
     get 
     {  
       return st;
     }
  } 

  public void Test()
  {
     st = new management[3];
     
       st[0].person.name =  "Jone1";
       st[0].person.age = "21";
       st[0].person.job = "engineer1";
       st[0].count_of_employee = ++Count;
    
       st[1].person.name =  "Jone2";
       st[1].person.age = "22";
       st[1].person.job = "engineer2";
       st[1].count_of_employee = ++Count;

       st[2].person.name =  "Jone3";
       st[2].person.age = "23";
       st[2].person.job = "engineer3";
       st[2].count_of_employee = ++Count;

  }
}

int main(int argc, char* argv[])
{
   ConInitialize(NULL);
   ICallmyClass *csi = NULL;

   HRESULT hr = CoCreateInstance(CLSID_MYCLASS, NULL, CLSCTX_INPROC_SERVER, IID_ICALLMYCLASS,reinterpret_cast


Привет, у меня есть кое-что в моей программе..

Я разрабатываю простую программу о вызове библиотеки C# в среде C++.

Итак, я сделал библиотеку dll c# в visual studio и включил ее в проект c++. и я попытался вернуть параметр из библиотеки dll c# о string, integer.

Но я хочу попытаться получить массив структуры" управление " из библиотеки dll c#. Поэтому я скомпилировал в проекте c++, это была ошибка при вызове функции "SafeArrayAccessData".

Сообщение об ошибке было примерно таким. "это - & gt;getData ((LPSAFEARRAY*) & pRetVal); либо предыдущий формат, либо неправильная библиотека типов "


Что такое программа в моем коде??...

кто-нибудь знает об этой проблеме?

Что я уже пробовал:

Я попробовал поискать в гугле. но у него все еще нет никаких решений..

и я нашел похожие ответы в codeproject.com
http://www.codeproject.com/Questions/134062/C-dll-C-client-pass-array-parameter

http://www.codeproject.com/Articles/16206/Call-C-code-from-C-and-read-an-array-of-struct-whi

http://www.codeproject.com/Articles/637320/Modifying-an-array-of-structures-default-marshalin

http://www.codeproject.com/Answers/134347/C-dll-C-client-pass-array-parameter#answer2

но у него все та же ошибка.

Philippe Mori

Почему вы не используете C++/CLI (mixed mode C++) вместо этого?

1 Ответов

Рейтинг:
0

KarstenK

Сортировка сложных данных-это всегда проблема, поэтому я бы разделил эту задачу на несколько простых и разумных шагов.

1. инициализируйте новую передачу (установите count в 0 или The count)
2. передайте каждый набор данных с помощью простого типа данных (например, struct или strings)
3. завершите и завершите передачу

Вот какой-нибудь примерный проект как это можно сделать.