gpt4 book ai didi

.net - 如何使用 Turbo C 从 C 程序创建 DLL

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:57 26 4
gpt4 key购买 nike

我在 Turbo C 中编写了一个小程序,我想获取或创建该程序的 DLL 以便在我的 C# 应用程序中使用它。

那么如何使用 Turbo C 创建 C 程序的 DLL?
我想在 DLL 引用中将它与 C# 或 VB 程序一起使用。

如果找到this link , 但我听不懂。

最佳答案

不要使用 Turbo C 并使用 Visual C++ 编译,因为我们必须使用 Win32 调用约定。假设 math.h 是您的图书馆。

#include <math.h>

extern "C"
{
__declspec(dllexport) double __stdcall MyPow(double, double);
}

extern double __stdcall MyPow(double x, double y)
{
return pow(x, y);
}

然后使用 DllImport 将其导入到您的 C# 应用程序中.

class Program
{
[DllImport("MyLibrary.dll")]
extern static double MyPow(double x, double y);

static void Main(string[] args)
{
Console.WriteLine(MyPow(2.0, 5.0));

Console.ReadKey();
}
}

这会使您的代码极度不受管理。更好的方法是创建托管 C++ 包装器。为此,创建一个新的 Visual C++ 动态库项目,启用 Common Language RunTime Support (OldSyntax)Project Properties > Configuration Properties > C/C++ > General 下并禁用 C++ Exceptions项目属性 > 配置属性 > C/C++ > 代码生成。为发布目标构建。

extern "C"
{
#include <math.h>
}

namespace Wrapper
{
public __gc class MyClass
{
public:
static double MyPow(double x, double y)
{
return pow(x, y);
}
};
};

然后创建一个新的 Visual C# 项目,引用我们刚刚创建的 .DLL 文件并在项目属性>构建中,检查Allow unsafe code如果您在原始库中使用指针并需要在 C# 应用程序中修改它们。

class Program
{
static void Main(string[] args)
{
Console.WriteLine(Wrapper.MyClass.MyPow(2.0, 5.0));

Console.ReadKey();
}
}

关于.net - 如何使用 Turbo C 从 C 程序创建 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3340670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com