powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / C# vs pinvoke
2 сообщений из 2, страница 1 из 1
C# vs pinvoke
    #39397378
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, коллеги!

Как всегда нужна ваша помощь.

C++
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
#include "C:\Users\vvf6426\Documents\testDLL\header.h"
#include "C:\Users\vvf6426\Documents\testDLL\body.cpp"
#include <comutil.h>
#include <queue>

using namespace std;


extern "C" __declspec(dllexport) double sumTwo(double var_x, double var_y)
{
	myClass MC(var_x, var_y);
	return MC.sumX_Y();
}

extern "C" _declspec(dllexport) BSTR getNskv()
{
    return ::SysAllocString(L"Greetings from the native world!");
}

typedef struct
{
	int   id;
	char* name;
	int   age;
	int   sex;
} PERSON;

std::queue<PERSON> result;

int i;
int main() {
	while ( i<= 3 ) {
		PERSON person;
		person.id = i;
		person.age = i*i;
		person.sex = 1;
		person.name = "Ivan";
		result.push(person);
		++i;
	}
}



C#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
namespace MvcCppDLL.Models
{
    public class GetDataCppDLL
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int X { get; set; }
        public int Y { get; set; }
        public string b { get; set; }

        [DllImport(@"C:\Musor\CppClassDll\Release\CppClassDll.dll", CallingConvention = CallingConvention.Cdecl)] // устанавливаем название используемой библиотеки
        public static extern double sumTwo(double var_x, double var_y);
        

        [DllImport(@"C:\Musor\CppClassDll\Release\CppClassDll.dll", CallingConvention = CallingConvention.Cdecl)]
        [return: MarshalAs(UnmanagedType.BStr)]
        private static extern string getNskv();

        public double getSumm()
        {
            double summ = 0;
            summ = sumTwo(X,Y);
            return summ;
        }

        public string getByte()
        {
            b = getNskv();
            return b;
        }
    }
}



Числовое и строковое значение получил, а вот на queue застрял, чет никак не соображу.
Помогите пожалуйста вытащить result из DLL.
Спасибо большое!
...
Рейтинг: 0 / 0
C# vs pinvoke
    #39398159
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение подсказали тут .
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / C# vs pinvoke
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]