2010-07-27 83 views
1

我在Turbo C中編寫了一個小程序,我希望獲得或創建該程序的DLL,以便與我的C#應用​​程序一起使用它。如何使用Turbo C從C程序創建DLL

那麼如何使用Turbo C創建一個C程序的DLL?
我想在一個DLL引用中使用它與C#或VB程序。

如果找到this link,但我無法理解它。

回答

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++動態庫項目,在下啓用項目屬性>配置屬性> C/C++>常規並禁用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(); 
    } 
} 
+0

抱歉兄弟得到運行時錯誤,, !! 無法加載DLL'MyLibrary.dll':無法找到指定的模塊。 (異常從HRESULT:0x8007007E) 我試過第一個 - 構建成功在dll的發佈目標和我的應用程序無法加載DLL .. !! ?? HElp PLZ .. !! – pvaju896 2010-07-28 15:25:13

+0

對不起兄弟!! 我試了win32項目和C#應用程序運行釋放目標..! 它工作thanx .. !! – pvaju896 2010-07-28 15:28:52

+0

>是X bro .. !!兩者都很好.. >我在尋找的是第二種類型。 > secound類型真的很好。 – pvaju896 2010-07-28 17:32:22

3

Turbo C(1989年的最後一版)是一個基於DOS的程序。它不能創建Win32 DLL。

由於您已經在使用Visual Studio for C#,因此我強烈建議使用Visual C++作爲DLL。 Visual C++是自我解釋的(提示:Win32 DLL是你想要的項目類型)。