2013-11-14 3 views
0

Я удалил процесс получения dll C++, вызванного в консольном приложении C#. Не могли бы вы помочь мне в вызове dll C++ в одной из функций кнопки приложения Form, которую я создал в C# снова.Вызов C++ dll из winforms-приложения

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button3_Click(object sender, EventArgs e) 
     { 
      // call the c++ dll here. 
     } 
    } 
} 

Я хочу, чтобы DLL вызывалась в вызове функции «button3_Click». Я попытался сделать вызов

[DllImport("LicenseCheck.dll")]; 
public static extern void GetLicense(); 

что StackOverflow научил меня, но тогда работал только тогда, когда я попробовал его на консольное приложение.

Был бы определенно счастлив, если бы кто-нибудь мог мне помочь. Спасибо

+0

Какая ошибка/проблема возникает, когда вы пытаетесь использовать DllImport здесь? – Baldrick

+0

Привет, Baldrick, когда я пытаюсь сделать это private void button3_Click (отправитель объекта, EventArgs e) { {DllImport ("LicenseCheck.dll")] public static extern void GetLicense()}, он говорит «ожидаемый» другой У персонажей есть красная фигурная линия под ним. Поэтому было бы очень приятно, если бы вы могли помочь мне, как мне позвонить в dll здесь. Это правильный способ назвать это? (Я уверен, что это не так) – user2982029

ответ

1

Я думаю, что вы помещаете оператор DllImport встроенным кодом, а не в тело класса.

Понадобится:

public partial class Form1 : Form 
{ 
    [DllImport("LicenseCheck.dll")]; 
    public static extern void GetLicense(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     // call the c++ dll here. 
     GetLicense(); 
    } 
} 

Пожалуйста, обратите внимание, что для этой работы, разрядность DLL должна соответствовать разрядности вашего приложения, в противном случае исключение BadImageFormatException приведет.

+0

Спасибо, Балдар, за то, что сообщили мне, как вызвать импорт dll в нужном месте. К сожалению, я получил это, когда попытался выполнить его .... Необработанное исключение типа «System.BadImageFormatException» произошло в WindowsFormsApplication1.exe ...... Дополнительная информация: Была сделана попытка загрузить программу с неправильным форматом , (Исключение из HRESULT: 0x8007000B) .... Я разместил dll в месте, где создается form.exe. – user2982029

+0

Привет, Baldrick, я понял ... hip hip hurray ... Хорошо, поэтому проблема заключалась в том, что моя Dll была построена в 32-битном режиме, и я пытался выполнить приложение с 64-битной формой ... Вот когда вышеизложенное произошла ошибка. Спасибо, stackoverflow и Baldrick за знания. Хвала Богу – user2982029

+0

HAHA собирался опубликовать именно это предложение. Я обновил свой ответ, чтобы включить этот момент. Удачи вам в остальном проекте. – Baldrick