2012-03-16 2 views
0

Я изучаю dllexport и dllimport между C++ и C#.Ошибка при использовании пространства имен?

Я прочитал эту статью http://functionx.com/csharp2/libraries/cppcli.htm

My 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; 
    } 
    }; 
} 

и здесь 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

спасибо, можете ли вы показать мне, как изменить этот параметр в визуальном проекте C# 2010? – TTGroup

+0

Я нашел его, спасибо ^^ – TTGroup

Смежные вопросы