如何在c#gui中调用我的c ++程序?

时间:2016-06-14 12:09:10

标签: c# c++

我可以在c#gui中调用这个c ++代码吗?如果是这样,我怎么能这样做? 我的c ++功能:

int getSize(const char *file) {
    HANDLE hFile;

    LPCWSTR inFile = (LPCWSTR)file;
    hFile = CreateFile(
        inFile,
        GENERIC_READ,
        FILE_SHARE_READ,
        0,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,
        NULL
    );

    DWORD dwFileSize;
    dwFileSize = GetFileSize(hFile, NULL);
    CloseHandle(hFile);
    return dwFileSize;
}

我想在c#中使用它,如下所示:

int fileSize = getSize(DecryptionOpenFile.FileName);

1 个答案:

答案 0 :(得分:2)

您只需将DLL导入C#GUI项目并围绕它创建一个包装器。

以下是一个示例:

public class HomeController : Controller
{
    [HttpPost]
    public ActionResult Index(FormCollection formCollection)
    {
        var value = formCollection["nameOfControl"];
        //do stuff
        return View();
    }
}

然后在您的代码中,您只需要像这样调用它:

public static class IncDll
{
    [DllImport("myLibrary.dll")]
    public static extern void MethodName(ParameterList);
}

您还可以拥有两个项目,一个在C ++ / CLI中,另一个在C#中。

C ++ / CLI正在包装本机C ++ API。

然后将对C ++ / CLI库的引用添加到C#中,您将能够通过包装器使用本机库。