4

假设我有一些用于可移植的非可视库的 C 代码。该代码主要依赖于 CRT(没有 QT/DirectX/WinAPI 等依赖项)。

有没有办法可以在 C# 应用程序中使用此代码?我知道托管 C++,这对我来说不是可接受的方式。

我想到了一个可以用于自动翻译的 C/C++ 到 C# 转换器(我不需要可读的输出,一个工作的输出就足够了)或者我可以用来执行编译的 C/C++ 代码的模拟器。

你知道任何可以帮助我从 C# 代码中使用现有 C/C++ 代码的东西吗?

编辑:

P/Invoke 也不是一种可接受的方式。以及调用外部 EXE 或使用 COM/ActiveX。我需要一些允许我将 C 和 C# 代码合并到一个托管 DLL 或 EXE 中的东西。

现有的 C 代码是库 (.lib),而不是 EXE。

4

2 回答 2

7

为什么不临时将 C++ 编译为托管 C++,以获得 .net 程序集,然后使用 Reflector 将其反编译成纯 C#?

于 2012-07-02T13:11:42.837 回答
0

我认为直接从 DLL 中使用方法而不将代码转换为 C# 是最简单的。这很好用,一个缺点是您必须为不同的平台提供多个二进制文件。从 Dll 导入函数就像

[DllImport("kernel32.dll")]
public static extern IntPtr GetProcAddress (IntPtr hModule, string procedureName);

我认为如果不转换前者,将 C 和 C# 代码合并到一个 DLL 中是不可行的。

于 2012-07-02T12:53:09.960 回答