• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Работа с 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. Давно это было, но работает до сих пор.
 
Мы в соцсетях:

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