我可以在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);
答案 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#中,您将能够通过包装器使用本机库。