1

Turbo Cで小さなプログラムを作成しましたが、C#アプリケーションで使用するためにこのプログラムのDLLを取得または作成したいと思います。

では、Turbo Cを使用してCプログラムのDLLを作成するにはどうすればよいですか?
DLLリファレンスのC#またはVBプログラムで使用したいと思います。

このリンクを見つけたら、私はそれを理解できませんでした。

4

2 に答える 2

3

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();
    }
}
于 2010-07-27T05:01:51.420 に答える
3

Turbo C(1989年の最後のリリース)はDOSベースのプログラムです。Win32DLLを作成することはできません。

すでにVisualStudiofor C#を使用しているため、DLLにVisualC++を使用することを強くお勧めします。Visual C ++は自明です(ヒント:Win32 DLLは必要なプロジェクトタイプです)。

于 2010-07-27T04:21:47.423 に答える