2013-04-09 5 views
3

У меня есть DLL, функции которого я хочу использовать в моей C# код Вот функции этой библиотеки:Импорт функции DLL в C# код

extern "C" 
{ 
    __declspec(dllimport) 
    const char* __stdcall ZAJsonRequestA(const char *szReq); 

    __declspec(dllimport) 
    const wchar_t* __stdcall ZAJsonRequestW(const wchar_t *szReq); 

    __declspec(dllimport) 
    const BSTR __stdcall ZAJsonRequestBSTR(BSTR sReq); 
} 

Может кто-нибудь сказать мне, как использовать его в C# проекта, так как эта dll кажется на другом языке?

+2

Не следует '__declspec (dllimport)' быть '__declspec (dllexport)'? – leppie

+0

Я скопировал это из документации DLL. И, в этой dll, dllimport используется не dllexport –

+0

teka смотрите на этом http://stackoverflow.com/questions/4845128/marshaling-byval-c-structure-as-return-value-in-c-sharp –

ответ

3

Пожалуйста, посмотрите на следующий article по проекту Кодекса для подробно объяснения

Небольшой образец из связанного статьи, как показано ниже

Для вызова функции, скажем имяМетода

int __declspec(dllexport) methodName(int b) 
{ 
     return b; 
} 

Включить библиотеку классов (MethodNameLibrary.dll), содержащую указанный выше способ, как показано ниже в C#

class Program 
{ 
    [DllImport(@"c:\MethodNameLibrary.dll")] 
    private static extern int methodName(int b); 
    static void Main(string[] args) 
    { 
     Console.WriteLine(methodName(3)); 
    } 
} 
+0

Я пробовал это, но когда я пытаюсь вызвать функцию, она выходит из блока, и следующие утверждения не выполняются. Мое заявление таково: [DllImport ("FANselect.dll", EntryPoint = "ZAJsonRequestA")] приватная статическая внешняя строка ZAJsonRequestA (строка szReq); и я пытаюсь вызвать его, используя: string sResult = ZAJsonRequestA (sRequest); Это выглядит замечательно для меня, но я не получаю результат –

+0

@AmitAgrawal Пожалуйста, посмотрите следующий [SO Question] (http://stackoverflow.com/q/508227/1012641) за помощью с объявлением –

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