Problem pozivanja C unmanaged funkcije iz C#

  • 4 odgovora
  • 2.655 pregleda
Problem pozivanja C unmanaged funkcije iz C# 29.06.2006. u 13:31 · pre 247 meseci #1
Pozdrav svima. Problem je sledeci:
Imam file.h datoteku u kojoj je izmedju ostalog i sledeca funkcija:
Code:

int DllExport DataqVReadAIMultiChannelCSharp(int iCardNo, int (*iChannelNumberArray)[4], int iNumberofChannels, int iAIMode, float (*fVoltageArray)[4]);

Prvi array je input a drugi bi trebao vratiti neke vrijednosti.

Nigdje na netu ne mogu da nadjem neki normalno napisani dokument kaji objasnjava kako bih trebao da postavim parametre u C# deklaraciji.
Probao sam na sledeci nacin da definisem funkciju u C#-u:
Code:

        [DllImport("DataqCF2.dll", SetLastError = true)]
        public static extern unsafe int DataqVReadAIMultiChannelCSharp(int iCardNo, int[] iChannelNumberArray, int iNumberofChannels, int iAIMode, float[] fVoltageArray);


Pozivao sam je na sledeci nacin:
Code:

float[] values = new float[4];
int[] channels = new int[4];
channels[0] = 0;
            channels[1] = 1;
            channels[2] = 2;
            channels[3] = 3;
DataqCF2.DataqVReadAIMultiChannelCSharp(Program.cardCount - 1, channels, 4, 0, values);

nakon izvrsenja vrijednosti values-a su 0-e. Ako dodam 'out' ispred values onda program napravi exception.

Pomoglo bi mi konkretno rjesenje, a jos vise neki dobar dokument u kojem je napisano sve o tome sa primjerima.

Unaprijed hvala!
Potpis
Pozdrav!
Re: Problem pozivanja C unmanaged funkcije iz C# 29.06.2006. u 13:50 · pre 247 meseci #2
Managed C++ (C++/CLI)
Kako se sad bas upoznajem sa gore navedenim, ako ti nije problem da mi das funkciju pa cu ti je napraviti managed asembly koji ces lako moc iskoristiti.
Ti pomognes meni - ja tebi...
Re: Problem pozivanja C unmanaged funkcije iz C# 30.06.2006. u 10:53 · pre 247 meseci #4
Da budem malo precizniji. Kako da predam parametar tipa array tako da unmanaged funkcija upise u njega vrijednosti i da pri povratku mogu procitati te vrijednosti?

Hvala
Potpis
Pozdrav!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme