2014-02-12 4 views
0

У меня проблема с использованием неуправляемой dll в моем приложении C#. Конкретно, у меня есть этот файл заголовкаМетоды вызова из unmannaged C++

Заголовок

#ifdef RSAVREC_EXPORTS 
#define RSAVREC_API __declspec(dllexport) 
#else 
#define RSAVREC_API __declspec(dllimport) 
#endif 

class RSAVREC_API CRsavRec { 
public: 
    CRsavRec(void); 
}; 

RSAVREC_API void REC_stopRecordAvi(unsigned int chnIndex); 

C# код

[DllImport("rsavRec.dll")] 
private static extern void REC_stopRecordAvi(uint chnIndex); 

private void button2_Click(object sender, EventArgs e) 
{ 
    REC_stopRecordAvi(0); 
} 

На button2 клик я получил это сообщение:

Невозможно найти точка входа с именем «REC_stopRecordAvi» в DLL 'rsavRec.dll'.

Dll был скомпилирован с помощью VC6.

Заранее спасибо.

ответ

0

Вы можете попробовать использовать Экстерн «C» на ваш неуправляемый экспортируемых функций:

extern "C" RSAVREC_API void REC_stopRecordAvi(unsigned int chnIndex) 
{ 
    // implementation 
} 

Вы также можете использовать __cdecl вызывающей конвенции:

extern "C" RSAVREC_API __cdecl void REC_stopRecordAvi(unsigned int chnIndex) 
{ 
    // implementation 
} 
+0

Спасибо! Вы решили проблему. – UnmanagedCoder

0

следующие работы для меня:

в .h

extern "C" 
{ 
    __declspec(dllexport) int __cdecl MethodName(parameters); 
} 

В .cpp

extern int __cdecl MethodName(parameters) 
{ 
    //Code 
    ... 

    return success; 

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