Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
1

Не получается вызвать функцию из простейшей библиотеки, написанной на C++

05.06.2017, 17:50. Показов 681. Ответов 2
Метки нет (Все метки)

Братва, спасай! Я уже все волосы с груди содрал!

Создал новую библиотеку, чистую, чтоб уж наверняка, там создал функцию, которая выводит TextBox. Вот ВСЁ, что есть в проекте DLL:

C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
// Ключевое слово __declspec(dllexport)
// делает функцию экспортируемой
__declspec(dllexport) void MyFunc()
{
    MessageBox(NULL, L"Hello world!", L"Capture", MB_OK);
}
Больше ни единой строчки, ни единого файла, никаких ошибок, всё скомпилилось нормально.

Теперь создал новый стандартный проект WinForms, нулёвый. В нём в главном CS файле вот это:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace CS_WF_Test
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        /// 
        /// Опишем функцию, которую будем вызывать из DLL
        [DllImport(@"C:\*Path*\My.dll")]
        public static extern void MyFunc();
 
        [STAThread]
        static void Main()
        {
            MyFunc();
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
Путь верный, функция, как видите, есть, тип функции правильный, all nice? NO!

Catch the exception, piece of shit!

System.EntryPointNotFoundException: "Не удается найти точку входа "MyFunc" в DLL "C:\*Path*\My.dll"."
Я подумал: "НУ, может быть в проекте нужно просто установить, какой файл загружать первым". Как это сделать я е знал, так что создал опять новый проект, но уже заготовок, НЕ пустой проект с экспортом символов и предкомпилированным заголовком, добавил в него новую функцию, решил вызвать её, и...

И нифига! С# на отрез отказывается видеть и эту функцию.

Ладно, ладно, возможно, я не так эту функцию создал, попросил программу достать УЖЕ ГОТОВУЮ функцию из шаблона, я просто поменял тамашний
C++
1
...(void)
на
C++
1
...()
, не знал, как аргумент void вставлять. Чудо, почему-то, не случилось.

What the hell, bros? Что я сделал не так?

Весь необходимый код всех проектов приложен.
Миниатюры
Не получается вызвать функцию из простейшей библиотеки, написанной на C++   Не получается вызвать функцию из простейшей библиотеки, написанной на C++   Не получается вызвать функцию из простейшей библиотеки, написанной на C++  

Не получается вызвать функцию из простейшей библиотеки, написанной на C++   Не получается вызвать функцию из простейшей библиотеки, написанной на C++  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2017, 17:50
Ответы с готовыми решениями:

Не получается вызвать функцию из динамической библиотеки DLL
#include &lt;iostream&gt; #include &quot;windows.h&quot; HINSTANCE h; typedef int (CALLBACK * function)(int...

Не получается вызвать функции из dll, написанной на Delphi
Использую библиотеку программы Invisible Secrets. А именно jpgcarrier.dll . Она шифрует\дешифрует...

Не получается получить данные из динамической библиотеки, написанной на FASM...
Здравствуйте. Не получается получить данные из Java, в dll написанной FASMом, изменить что-нибудь...

Как вызвать функцию из dll, написанной на C++?
Здравствуйте, как вызвать данную функцию правильно: extern int __stdcall CheckRequestA(char *...

2
Эксперт С++
3140 / 2421 / 408
Регистрация: 03.05.2011
Сообщений: 4,987
Записей в блоге: 20
05.06.2017, 18:09 2
C++
1
2
3
extern "C" __declspec(dllexport) void __stdcall MyFunc() {
    MessageBox(NULL, L"Hello world!", L"Capture", MB_OK);
}
1
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
05.06.2017, 18:11  [ТС] 3
_lunar_, озвереть, я 4 часа не мог понять, какого чёрта не работает...

Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2017, 18:11
Помогаю со студенческими работами здесь

Вызвать функцию из библиотеки
Здравствуйте, сразу-же к сути. Пишу библиотеку. Суть библиотеки в том что бы сделать...

Как вызвать функцию FFT из библиотеки AlgLibNet
Помогите, пожалуйста, освоить работу с этой библиотекой. Тестовый пример test_i заработал, а test_c...

Не получается вызвать функцию
Есть функция &quot;void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, ...

Не получается вызвать функцию
Всем привет! Возникла проблема: необходимо вызвать функцию, но система ругается. Если кому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru