2015-11-11 2 views
-1

Я пытаюсь создать dll и вызвать функцию из приложения C#.C# dllImport неразрешенный внешний символ

мой код выглядит следующим образом:

header.h

#define DllItem __declspec(dllimport) 
class DllItem Access 
{ 
public: 

    Access(); 
    ~Access(); 

    bool open(); 

} 

.cpp

#include "header.h" 


void openTracker() 
{ 
    Access access; 

    access.open(); 
} 

C#

using System.Runtime.InteropServices; 

namespace CSharp 
{ 
    class Access 
    { 

     [DllImport("Access.dll", CallingConvention = CallingConvention.Cdecl)] 
     public static extern void openTracker(); 




     static void Main(string[] args) 
     { 
      openTracker(); 
     } 
    } 
} 

Когда я построить DLL, я получаю неразрешенные внешние ошибки символов на __declspec (dllimport). что мне не хватает в функции?

Я следил за учебником, поэтому, возможно, некоторые ошибки. Правильно ли это? Спасибо.

+0

Вы добавили dll в качестве ссылки в проект C#? –

+0

Когда вы используете dllimport, вы обещаете, что * реализация * класса находится в другом модуле. Возможно, вы записали этот код в другой DLL и правильно использовали dllexport, это кажется маловероятным. Если вы это сделали, вы забыли рассказать об этом компоновщику, ему нужно связать библиотеку импорта этой другой DLL. –

+0

ах, у меня была связанная с x64 lib, когда ей должно было быть 32. Спасибо всем! – anti

ответ

1

Это все ваш код? Где определение Access :: open function?

От Using dllimport and dllexport in C++ Classes

Вы должны предоставить определение всех таких членов в той же программе. В противном случае возникает ошибка компоновщика

Надеюсь, вы найдете это полезным.

+0

Как и выше, у меня глупо было связанное с x64 lib вместо 32. Спасибо за ссылку, хотя, безусловно, полезно. – anti

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