С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
1

Создать DLL на С++ и вызвать ее функции

10.10.2014, 09:39. Показов 1042. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, в общем пытаюсь это сделать, но после компиляции не могу найти библиотеку ))), куда она сохраняется непонятно.

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
30
31
32
33
34
35
using System;
using System.Runtime.InteropServices;
 
namespace ConsApp_CppDllTest
{
    class Program
    {
        [DllImport(@"TestDll.dll", CallingConvention = CallingConvention.Cdecl)]
        static extern IntPtr SegmentRectangle();
 
 
        [DllImport(@"TestDll.dll", CallingConvention = CallingConvention.Cdecl)]
        private static extern void HelloWorld();
 
 
        [DllImport(@"TestDll.dll", CallingConvention = CallingConvention.Cdecl)]
        private static extern void ShowMe();
 
 
 
        static void Main(string[] args)
        {
            var k = SegmentRectangle();
            var a = Marshal.PtrToStringAnsi(k);
 
 
            Console.WriteLine(a);
 
            HelloWorld();
            ShowMe();
 
            Console.ReadKey();
        }
    }
}
Создал консольный проект на C#.
Далее действия:
Создать проект => Visual C++ => Консольное приложение Win32.

Там я выбрал, что нужно создать DLL.

В Dll написал:
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
30
31
32
33
34
35
36
// dllmain.cpp: определяет точку входа для приложения DLL.
#include "stdafx.h"
 
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
 
extern "C"
{
    __declspec(dllexport) char*  __cdecl SegmentRectangle()
    {
        return "segment into rectangle";
    }
 
    __declspec(dllexport) void HelloWorld()
    {
        MessageBox(0, L"Hello World from DLL!\n", L"Hi", MB_ICONINFORMATION);
    }
 
    __declspec(dllexport) void ShowMe()
    {
        MessageBox(0, L"How are u?", L"Hi", MB_ICONINFORMATION);
    }
}
В общем, что я делаю не так? Проект прикрепил.
Вложения
Тип файла: rar ConsApp_CppDllTest.rar (14.2 Кб, 4 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2014, 09:39
Ответы с готовыми решениями:

Создать DLL и из тестовой программы вызвать процедуру из этой DLL
Здравствуйте ,проверти правильно выполнения задания ,нужно создать библиотеку и использовать ее же...

Помогите вызвать сишные функции из dll-ки
Здравствуйте! Я начинающий VB программист. Я разработал программу для win2k и не могу заставить ее...

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

Подскажите, как вызвать в основном файле функцию из .dll, используя функции WinAPI
Привет всем. Подскажите, пожалуйста, как вызвать функцию, определение которой находится в...

3
Почетный модератор
Эксперт .NET
8722 / 3674 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
10.10.2014, 09:52 2
Цитата Сообщение от Casper-SC Посмотреть сообщение
куда она сохраняется непонятно
Проверьте путь ..\Release|Debug относительно файла TestLibrary.vcxproj.

А вообще переходите в свойства проекта -> Linker -> Command Line -> Смотрите параметр /OUT
1
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
10.10.2014, 10:40  [ТС] 3
NickoTin, в общем, создал dll проект снова, убрал там одну галочку, в которой что-то там: проверка жизненного цикла ПО.

И вот в этом проекте после компиляции появилась та самая папка Release.

Вот рабочий проект, мало ли кому-то понадобится:
Вложения
Тип файла: rar ConsApp_CppDllTest.rar (33.0 Кб, 13 просмотров)
2
NickoTin
10.10.2014, 11:39     Создать DLL на С++ и вызвать ее функции
  #4

Не по теме:

Casper-SC, у меня и прошлый проект нормально сбилдился :)

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

Как сохранить форму в dll и потом вызвать её из проэкта к которому подключена эта dll?
Как сохранить форму в dll и потом вызвать её из проэкта к которому подключена эта dll?

Можно ли из ASP как-то вызвать dll, чтобы результат её (dll) работы вставился в место вызова?
Можно ли из ASP как-то вызвать dll, чтобы результат её (dll) работы вставился в место вызова?...

Создать dll и вернуть из функции значение строки
вообщем надо на си сделать отдельную длл и вернуть значение а как не умею обьясните

Создать DLL, в котором необходимо описать следующие функции
1. Нахождения максимального и минимального элементов безразмерного массива (границы массива...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C#
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru