我在 Turbo C 中编写了一个小程序,我想获取或创建一个这个程序的DLL,以便在我的C#应用程序中使用它。
那么如何使用Turbo C创建C程序的DLL? 我想在DLL引用中使用它与C#或VB程序。
如果找到this link,但我无法理解。
答案 0 :(得分:3)
Turbo C(1989年最后一个版本)是一个基于DOS的程序。它无法创建Win32 DLL。
由于您已经在使用Visual Studio for C#,我强烈建议您使用Visual C ++作为您的DLL。 Visual C ++是自解释的(提示:Win32 DLL是您想要的项目类型)。
答案 1 :(得分:3)
不要使用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 ++动态库项目,在项目属性&gt;下启用Common Language RunTime Support (OldSyntax)
。配置属性&gt; C / C ++&gt;一般并在项目属性&gt;中停用C++ Exceptions
配置属性&gt; C / C ++&gt;代码生成。构建发布目标。
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文件,并在项目属性&gt;中构建,如果您在原始库中使用指针并需要在C#应用程序中修改它们,请检查Allow unsafe code
。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Wrapper.MyClass.MyPow(2.0, 5.0));
Console.ReadKey();
}
}