久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C#傳委托給C的函數(shù)指針調(diào)用問題

 雪柳花明 2016-08-18

C代碼如下:

#include "stdio.h"

__declspec(dllexport) int Call(int (*qq)(int num),char * str)
{    
    printf(str);
    return qq(123);
}
多次驗證發(fā)現(xiàn)在C#中傳委托給C中的函數(shù)指針,如果委托不帶參數(shù)則都能成功運行,,但是委托一帶參數(shù)不管是int參數(shù)還是string參數(shù)或者其他參數(shù),,都會報“ 嘗試讀取或?qū)懭胧鼙Wo的內(nèi)存,。這通常指示其他內(nèi)存已損壞的錯誤,找了一天才找到解決方法,,既在C#的委托聲明上加[UnmanagedFunctionPointer(CallingConvention.Cdecl)],,正確調(diào)用如下:

 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
    public delegate int MyDeg(int num);
    class Program
    {
        static void Main(string[] args)
        {
            
            try
            {
                MyDeg myd = new MyDeg(FF);
                Console.WriteLine(Call(myd, "helloworld"));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }

        static int FF(int num)
        {
            Console.WriteLine(num);
            return num + 1;

        }

        [DllImport("my.dll", EntryPoint = "Call")]
        public extern static int Call(MyDeg mm ,string  str);
    }

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多