Turbo Cで小さなプログラムを作成しましたが、C#アプリケーションで使用するためにこのプログラムのDLLを取得または作成したいと思います。
では、Turbo Cを使用してCプログラムのDLLを作成するにはどうすればよいですか?
DLLリファレンスのC#またはVBプログラムで使用したいと思います。
このリンクを見つけたら、私はそれを理解できませんでした。
Turbo Cで小さなプログラムを作成しましたが、C#アプリケーションで使用するためにこのプログラムのDLLを取得または作成したいと思います。
では、Turbo Cを使用してCプログラムのDLLを作成するにはどうすればよいですか?
DLLリファレンスのC#またはVBプログラムで使用したいと思います。
このリンクを見つけたら、私はそれを理解できませんでした。
Win32の呼び出し規約を使用する必要があるため、TurboCを使用せずにVisualC++でコンパイルしてください。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);
}
次に、を使用してC#アプリケーションにインポートしますDllImport
。
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 ++ダイナミックライブラリプロジェクトを作成し、 [プロジェクトのプロパティ]>[構成のプロパティ]>[C / C ++]> [一般Common Language RunTime Support (OldSyntax)
]で有効にし、 [プロジェクトのプロパティ]>[構成のプロパティ]>[C /C++]>[コード生成]で無効にします。リリースターゲット用にビルドします。C++ Exceptions
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();
}
}
Turbo C(1989年の最後のリリース)はDOSベースのプログラムです。Win32DLLを作成することはできません。
すでにVisualStudiofor C#を使用しているため、DLLにVisualC++を使用することを強くお勧めします。Visual C ++は自明です(ヒント:Win32 DLLは必要なプロジェクトタイプです)。