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

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

10.10.2014, 09:39. Показов 1038. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru