[ chiro @ 29.06.2006. 13:31 ] @
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!
[ NrmMyth @ 29.06.2006. 13:50 ] @
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...
[ chiro @ 29.06.2006. 13:56 ] @
Nemam izvorni kod funkcije. Samo dll datoteku.
[ chiro @ 30.06.2006. 10:53 ] @
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
[ Oliver Klaćik @ 02.07.2006. 08:54 ] @
Nemam baš puno iskustva sa unmanaged kodom, ali zar ne bi bilo dovoljno da taj parametar proslediš kao reference (ref) input parametar?