• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Работа с Dll Visual Studio C++

  • Автор темы Ramzay
  • Дата начала
R

Ramzay

Пытаюсь загрузить функцию из dll.
Когда упртр*цензура*ю такие слова как HINSTANCE, GetProcAddress, LoadLibrary
компилятор говорит , что не знает таких типов и функций.

Почему?
 
R

Ramzay

на [DllImport("KERNEL32.DLL",EntryPoint="MoveFileW"...

компилятор отвечает 'DllImport' : attribute not found

Тоже самое он отвечает на [ComVisibleAttribute(true)]

Что делать дальше?
 
R

Ramzay

Если я не ошибаюсь, [DllImport ... используется для вызова DLL в C#.

Мне нужно вызвать DLL в С++.

Кто-нибудь может помочь?
 
R

Ramzay

Ругаться, мой друг, не надо. Если хочешь помочь - помогай. За ссылку спасибо, разобрался.
Проблема была в этом:

using namespace System::Runtime::InteropServices;
 
N

Ninetta

Ramzay, не могли бы вы написать тут, как вы подключаете DLL?
я пытаюсь так:

static HINSTANCE hinstDLL;
hinstDLL = LoadLibrary((LPCTSTR) "NeuroSvr.dll.embed.manifest");

но у меня не получается, в чем ошибка?
 
R

Ramzay

Ramzay, не могли бы вы написать тут, как вы подключаете DLL?

Мне вызвать функцию из dll удалась без использования LoadLibrary.
Вот часть кода, которая выполняется при вызове функции Hr(String, String) из модуля hr_main.dll
[codebox]
[DllImport("hr_main.dll")]
static extern int hr(String text, String caption); // описание функции, которая находится в Dll
private void button6_Click(object sender, EventArgs e)
{
String par = "Type="
+ dataGrid1.Rows[dataGrid1.CurrentRow.Index].Cells[0].Value.ToString().Trim()
+ "~~Rnk="
+ dataGrid1.Rows[dataGrid1.CurrentRow.Index].Cells[1].Value.ToString().Trim();// Параметр функции
String Prg = "M:\\UIT\\documents\\DOG\\KL-Bank\\Scrooge\\cli_bank.hrt"; // Параметр функции

hr(Prg, par); // Вызов функции, которая находится в dll
}
[/codebox]

Кроме этого, в начале файла cs должна быть строка:
[codebox]
using System.Runtime.InteropServices;
[/codebox]

Именно из-за этой строки мне и не удавлось вызвать dll. Давно это было, но работает до сих пор.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!