C 傳委託給C的函式指標呼叫問題

2022-02-15 12:49:39 字數 615 閱讀 2389

c**如下:

#include "stdio.h"

__declspec(dllexport) int call(int (*qq)(int num),char * str)

多次驗證發現在c#中傳委託給c中的函式指標,如果委託不帶引數則都能成功執行,但是委託一帶引數不管是int引數還是string引數或者其他引數,都會報「 嘗試讀取或寫入受保護的記憶體。這通常指示其他記憶體已損壞

」的錯誤,找了一天才找到解決方法,既在c#的委託宣告上加[unmanagedfunctionpointer(callingconvention.cdecl)],正確呼叫如下:

[unmanagedfunctionpointer(callingconvention.cdecl)]

public delegate int mydeg(int num);

class program

catch (exception ex)

}static int ff(int num)

[dllimport("my.dll", entrypoint = "call")]

public extern static int call(mydeg mm ,string  str);

}

C語言 給函式傳值和傳指標

傳值和傳指標,其實都是傳值 今天在完成資料結構作業時,一直無法給鍊錶 帶頭結點 插入新節點,一度以為是listinsert函式寫錯了,最後在leetcode群裡提問才知道,原來是initlist函式的問題 include include typedef int elemtype typedef st...

C 函式的傳值呼叫 指標呼叫 引用呼叫

該方法把引數的實際值複製給函式的形式引數。在這種情況下,修改函式內的形式引數對實際引數沒有影響。include using namespace std 函式宣告 void swap int x,int y int main 函式定義 void swap int x,int y 呼叫函式的時候,在函式...

C 委託 C函式指標

c 高階程式設計 裡說 net已委託的形式實現了函式指標的概念 這裡簡單比較一下兩者的區別 1 首先看看c下的 函式指標 如何宣告和定義乙個函式變數 typedef int func int x,int y 宣告 func func 定義乙個 函式變數 當已經有這樣乙個實現的函式時 int some...