Перейти к содержанию

WinForm на С# и использованием библиотеки С++


Рекомендуемые сообщения

С чего все начиналось...

В общем, как то раз пришла идея использовать удобный конструктор форм с С# но описывать API функции, что удобно писались на С++ было лень, выбор пал на импорт своих функций из dll С++ и использование их через форму на С#.

Запилил очень простой пример по созданию подобного сочетания.

Main.dll


#define EXPORTDLL extern "C" __declspec(dllexport)
#include <windows.h>
EXPORTDLL void Test();
EXPORTDLL bool bTest();
EXPORTDLL DWORD dTest(DWORD value1, DWORD value2);
BOOL m_bTest = FALSE;
//Main.h


#include "Main.h"

void Test()
{
MessageBox(NULL, "test", "Test", MB_OK);
}
bool bTest()
{
m_bTest = !m_bTest;
return m_bTest;
}
DWORD dTest(DWORD value1, DWORD value2)
{
DWORD ret;
ret = value1 + value2;
return ret;
}
//Main.cpp

P.S.

Тема несет в себе больше идейный характер по обходу плясок с бубном на C# WinAPI.

PartWin.rar

Изменено пользователем ICEBURG
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

У меня только один вопрос, без обид, НО какого чёрта?

Нафига использовать вообще сишную dll для работы с формами, когда на c# это и так есть (какой смысл жрать ещё больше памяти?)?

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

У меня только один вопрос, без обид, НО какого чёрта?

Нафига использовать вообще сишную dll для работы с формами, когда на c# это и так есть (какой смысл жрать ещё больше памяти?)?

В видео только пример создания dll ну и соответственно пинок в нужную сторону кому это интересно.

И памяти сейчас у многих по 6-12 гб, не думаю что 12-15 метров на приложение что то изменит.

Ссылка на комментарий
Поделиться на другие сайты

В видео только пример создания dll ну и соответственно пинок в нужную сторону кому это интересно.

И памяти сейчас у многих по 6-12 гб, не думаю что 12-15 метров на приложение что то изменит.

Ты шутишь что ли???

По-твоему если у некоторых людей есть много оперативки, то значит можно пренебрегать оперативкой???

С такими идеалами далеко пойдёшь, рокстар видимо также как и ты думали, когда GTA IV портировали на ПК.

12-15 метров для формы? Для сравнения на C++ форма будет занимать 1000-2500 кб в оперативке (в зависимости сколько на ней контролов, и используют ли некоторые из них двойную буферизацию для собственной прорисовки).

У так языков как C# нет будущего, максимум на что он годен, это если тебе заказали софтину, и тебе не хочется тратить много времени на написание некоторых компонентов на C++.

И то всё, что он может это создавать формочки, на этом функционал языка заканчивается. Было как-то пара заказов у меня под решётки, я их конечно сделал, но он бесполезности этого языка я был в ярости.

Несколько примеров: bool test = 0; на C++ отлично будет работать, но на C# это скажет - ошибка неверный тип данных, даже несмотря на то что bool это 1 байт (хотя в C++ я делаю такие переменные размером в 1 бит, ибо какой смысл под bool тратить 8 бит?) и принимает значение 1 или 0.

Второй пример: нет нормальной поддержки WinAPI, вроде бы когда стартует твоя программа на решётках в неё загружены и kernel32.dll и user32.dll, но для того чтобы вызвать что-то из WinAPI нужно чуть ли не сплясать с бубном: нужно прописать Dllimport, объявить саму функцию (с дебильными именами типов C#), и возможно она заработает, но и это ещё не всё, скорее всего тебе ещё нужно будет привести кучу параметров к дебильным типам, которые ты прописал в объявлении функции.

Ещё немного негодования: для того чтобы использовать на решётках DirectX нужно быть матёрым бубенщиком (XNA не поддерживается, начиная с Windows 8), и даже если тебе это удастся сделать, то производительность будет расстраивать даже Леонида Аркадьевича.

Вывод: C# - это всего лишь маркетинговый ход, для того чтобы можно было быстро написать простые оконные приложения, которые у тебя заказали.

Ссылка на комментарий
Поделиться на другие сайты

Ты шутишь что ли???

По-твоему если у некоторых людей есть много оперативки, то значит можно пренебрегать оперативкой???

С такими идеалами далеко пойдёшь, рокстар видимо также как и ты думали, когда GTA IV портировали на ПК.

12-15 метров для формы? Для сравнения на C++ форма будет занимать 1000-2500 кб в оперативке (в зависимости сколько на ней контролов, и используют ли некоторые из них двойную буферизацию для собственной прорисовки).

У так языков как C# нет будущего, максимум на что он годен, это если тебе заказали софтину, и тебе не хочется тратить много времени на написание некоторых компонентов на C++.

И то всё, что он может это создавать формочки, на этом функционал языка заканчивается. Было как-то пара заказов у меня под решётки, я их конечно сделал, но он бесполезности этого языка я был в ярости.

Несколько примеров: bool test = 0; на C++ отлично будет работать, но на C# это скажет - ошибка неверный тип данных, даже несмотря на то что bool это 1 байт (хотя в C++ я делаю такие переменные размером в 1 бит, ибо какой смысл под bool тратить 8 бит?) и принимает значение 1 или 0.

Второй пример: нет нормальной поддержки WinAPI, вроде бы когда стартует твоя программа на решётках в неё загружены и kernel32.dll и user32.dll, но для того чтобы вызвать что-то из WinAPI нужно чуть ли не сплясать с бубном: нужно прописать Dllimport, объявить саму функцию (с дебильными именами типов C#), и возможно она заработает, но и это ещё не всё, скорее всего тебе ещё нужно будет привести кучу параметров к дебильным типам, которые ты прописал в объявлении функции.

Ещё немного негодования: для того чтобы использовать на решётках DirectX нужно быть матёрым бубенщиком (XNA не поддерживается, начиная с Windows 8), и даже если тебе это удастся сделать, то производительность будет расстраивать даже Леонида Аркадьевича.

Вывод: C# - это всего лишь маркетинговый ход, для того чтобы можно было быстро написать простые оконные приложения, которые у тебя заказали.

Что за фанатизм? Бомбануло? для того и пишется библиотека С++ что бы не плясать с бубном. Тема была создана в пример простоты использования и меньшей траты времени на создания красивой формы и использование ее как "тигера" для основных функций из своей dll.

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

Ссылка на комментарий
Поделиться на другие сайты

Что за фанатизм? Бомбануло? для того и пишется библиотека С++ что бы не плясать с бубном. Тема была создана в пример простоты использования и меньшей траты времени на создания красивой формы и использование ее как "тигера" для основных функций из своей dll.

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

Данная тема я даже не знаю как сказать правильно - сверх очевидная что ли. Может ты не знал, но многие приложения (в том числе и твоя форма на C#) используют сторонние библиотеки. Это равносильно тому, что ты сейчас создашь ещё одну тему и напишешь в ней, в C++ можно использовать классы.

На этом дискуссию прекращаем, так как это не флудильня. Дальнейшие сообщения не по теме будут удаляться.

Ссылка на комментарий
Поделиться на другие сайты

Данная тема я даже не знаю как сказать правильно - сверх очевидная что ли. Может ты не знал, но многие приложения (в том числе и твоя форма на C#) используют сторонние библиотеки. Это равносильно тому, что ты сейчас создашь ещё одну тему и напишешь в ней, в C++ можно использовать классы.

На этом дискуссию прекращаем, так как это не флудильня. Дальнейшие сообщения не по теме будут удаляться.

Не такого я ожидал от этого форума. Вроде тратишь свое время даже на составление роликов "очевидных вещей" иногда помогаешь по запросам взлома, заполняешь потихоньку форум и что в ответ? Высокомерные речи, агрессия, навязывание своих шаблонов(своих затычек).

Кодер если ты учился\учишся на программиста это + тебе, я же осваиваю все сам и с "нуля" . Если ты такой умный совокупляйся заполняй форум тогда дальше сам.

P.S.

Не сообщение, а тему тогда просто удали и все.

Ссылка на комментарий
Поделиться на другие сайты

Кодер, действительно, я стал замечать, что чем больше ты обретаешь знаний, тем нетерпимее становишься в тем, чей уровень знаний меньше твоего. Так нельзя. Представь, что было бы, если бы я к тебе так относился, когда ты задавал вопросы? Так что завязывай с подобными наездами. Ребята делают то, что умеют, и делятся знаниями, и это хорошо.

ICEBURG, ты молодец, продолжай заниматься изысканиями и изучением всего и вся ) Описанный тобой метод слишком примитивно описан, поэтому и было вызвано недоумение у Кодера. На самом деле, областей применения твоего метода немало, и хорошо, что ты с нами им поделился. Да, для нас этот метод, конечно же, не нов, но вот для менее искушенных в программировании людей он окажется весьма полезен ))

Ссылка на комментарий
Поделиться на другие сайты

Народ, я предлагаю вам попробовать свои силы RadASM

1. редактор форм и кода

2. мелкий exe-шник на выходе

codeedit.jpg

dlgedit.jpg

Блин, классная штука вообще! Редко увидишь такое, да ещё и без фреймворков.

Ссылка на комментарий
Поделиться на другие сайты

Блин, классная штука вообще! Редко увидишь такое, да ещё и без фреймворков.

Смотрю не недолюбливаешь фраемворк, на днях сделаю трейнер на c#. :)

Ссылка на комментарий
Поделиться на другие сайты

Смотрю не недолюбливаешь фраемворк, на днях сделаю трейнер на c#. :)

.NET Framework - недолюбливаю, и есть за что, да и сама специфика решёток мне противна.

Я предпочитаю C++/ASM (ASM сейчас активно изучаю).

Хотя если честно, я очень желаю написать свой FrameWork под C++ (и постепенно воплощаю эту идею).

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

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