2012-03-16 7 views
0

私はC++とC#の間のdllexportとdllimportについて研究しています。ここではC#のコードをある名前空間を使用しているときにエラーが発生しましたか?

// Business.h 

#pragma once 

using namespace System; 

namespace Business { 

    public ref class Finance 
    { 
    public: 
    double CalculateDiscount(double MarkedPrice, 
          double DiscountRate) 
    { 
     return MarkedPrice * DiscountRate/100; 
    } 
    }; 
} 

と::

私はこの記事にhttp://functionx.com/csharp2/libraries/cppcli.htm

私のC++ライブラリのコードを読んでいる

using System; 
using System.Runtime.InteropServices; 
using Business; 

namespace DepartmentStore 
{ 
    class Exercise 
    { 
     [DllImport("Business.dll")] 
     public static extern double CalculateDiscount(double price, 
                 double discount) 

     static int Main() 
     { 
      Finance fin = new Finance(); 

     double markedPrice = 275.50; 
     double discountRate = 25.00; // % 
      double discountAmount = fin.CalculateDiscount(markedPrice, 
                  discountDate); 
      double netPrice = markedPrice - discountAmount); 

      Console.WriteLine("Marked Price: {0:C}", markedPrice); 
      Console.WriteLine("Discount Rate: {0:P}", discountRate/100); 
      Console.WriteLine("Discount Amount: {0:C}", discountAmount); 
      Console.WriteLine("Net Price:  {0:C}\n", netPrice); 

     return 0; 
     } 
    } 
} 

しかし、構築中にエラー"The type or namespace name 'Business' could not be found (are you missing a using directive or an assembly reference?)"に遭遇しました。

誰かがそれを修正する方法を教えてくれます。

感謝

+0

"public ref class Finance" "ref"とは何ですか?これはC++ではありません – jcoder

+1

Business.dllへの参照を追加してDllImportの行を削除するか、より良いチュートリアルを見つけてください:) – Reniuz

答えて

6

DLL関数のインポートとエクスポートは、C ABIを使用しています。このバイナリインタフェースは名前空間について何も知らない。さらに、作成したDLLは、C++/CLI ではなく、 C ABIを使用します。それを使用するには、DLLImportを使用しないでください。プロジェクト設定でDLLを参照します。

+0

ありがとう、プロジェクトVisual C#2010でこの設定を変更する方法を教えてください。 – TTGroup

+0

私はそれを見つけました、ありがとう^^ – TTGroup

関連する問題