我想從C#調用C函數。我做了以下原型C#:如何在C#中將枚舉作爲參數傳遞給C函數
XBaseNamespace.cs
-----------------
using System;
using System.Runtime.InteropServices;
namespace XBaseNamespace.SecondNamespace
{
class XBaseFunctions
{
enum DSM_DIRECTION { FORWARD, BACKWARD };
[DllImport("W:\\Dropbox\\DSI (His)\\Windows Apps\\Debug\\DsiLibrary_CSharp.dll", CharSet = CharSet.Ansi)]
public static extern int XBaseDefineFile(int fileNumber, int fileSize, int wordsPerRecord, string fileType, DSM_DIRECTION fileDirection, out int pCurrentRecord);
}
}
Program.cs
----------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Bring in XBASE linkage
using XBaseNamespace.SecondNamespace;
namespace Call_C
{
class Program
{
static void Main(string[] args)
{
int currentRecord;
XBaseFunctions.XBaseDefineFile(2500, 32767, 80, "L", XBaseFunctions.DSM_DIRECTION.FORWARD, out currentRecord);
}
}
}
我得到的錯誤是:
1>W:\Dropbox\DSI (His)\Windows Apps\Testing\C_sharp\Call_C\XBaseNamespace.cs(25,34,25,49): error CS0051: Inconsistent accessibility: parameter type 'XBaseFunctions.DSM_DIRECTION' is less accessible than method 'XBaseFunctions.XBaseDefineFile(int, int, int, string, XBaseFunctions.DSM_DIRECTION, out int)'
所以我試圖用
XBaseNamespace.SecondNamespace.XBaseFunctions.DSM_DIRECTION.FORWARD
卻得到了一個類似的錯誤。
我檢查了幾個參考文獻,但沒有一個解決這個問題。
有人可以幫忙嗎?
嘗試使用枚舉'public',默認爲'private',指定命名空間對此沒有幫助。另請注意,由於您沒有爲您的'XBaseFunctions'類指定訪問修飾符,所以默認情況下它是'internal'。 –