C#調用C++ ---參數傳遞


C++中函數定義:

extern "C" __declspec(dllexport) void CharArray(char* cArray)
{
    printf("%s", cArray);
}

extern "C" __declspec(dllexport) void IntRef(int & iRef)
{
    iRef = 999;
}

extern "C" __declspec(dllexport) void FloatArray(float* fArray,int size)
{
    for (int i=0;i<size;++i)
    {
        fArray[i] = 6.6f;
    }
}

C#中調用:

    class Program
    {
      
        [DllImport("foo.dll",EntryPoint = "CharArray", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
        public static extern void CharArray([MarshalAs(UnmanagedType.LPStr)]string cArray);

        [DllImport("foo.dll", EntryPoint = "IntRef", CallingConvention = CallingConvention.Cdecl)]
        public static extern void IntRef(ref int iRef);

        [DllImport("foo.dll", EntryPoint = "FloatArray", CallingConvention = CallingConvention.Cdecl)]
        public static extern void FloatArray(float[] fArray, int size);

        static void Main()
        {
            int counter = 0;
            float[] farr =new float[6];
            string path = "c:\\foo\\bar";
            CharArray(path);
            FloatArray(farr, 6);
            IntRef(ref counter);
            Console.WriteLine(counter);
            for (int i = 0; i < 6; i++)
            {
                Console.WriteLine(farr[i]);
            }
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM