Я использовал DLL на C# и вызвал метод, который вернул мне объект C# класса DBConnection. У меня вопрос: если DLL не знает, на каком языке она будет использоваться, как она может вернуть объект класса C#?
Это объект .NET / CLR, а не объект C#.
В IL - из чего состоит dll (сборка) - нет такого понятия, как язык, по крайней мере, C# или VB. Это просто Ил. Таким образом, даже ваш C# -код транслируется в IL. Так что не имеет значения, на каком языке вы написали свой код, он преобразуется в IL. Однако детали слишком широки для однозначного ответа, поэтому я голосую за то, чтобы закрыть этот вопрос как «слишком общий».
Неясно, пишете ли вы свою DLL или используете external. Например, если вы разрабатываете C# DLL, вам следует сделать свой класс C# доступным для COM, а затем вы можете использовать его с C++.
Любой компилятор, который может генерировать код, работающий в .NET, генерирует IL. Аббревиатура от Intermediate Language. В этом языке есть поддержка объектов, их поведение в IL принципиально не отличается от того, как они ведут себя в C#. Специфично для DBConnection, провайдер базы данных часто пишется на языке C. Сделано доступным для любого .NET-совместимого языка с помощью оболочки, написанной на расширении языка C++ / CLI. Иногда с помощью pinvoke.





Не все библиотеки DLL одинаковы. Некоторые из них специфичны для COM. Некоторые нет. Некоторые из них представляют собой сборки .Net IL. Некоторые нет. Эта DLL представляет собой сборку .Net. Объекты класса, которые он предоставляет для вас, являются объектами нет строго C#. Это объекты .Сеть.
Это работает для вас, потому что C# сам построен для .Net и использует объекты .Net. Если бы вы использовали VB.Net, F#, IronPython, C++ CLR или другую платформу, использующую .Net, вы также могли бы использовать DLL. Но для C, Java, VBA и т. д. Будет гораздо труднее.
Сборка .NET - это стандарт, не зависящий от языка. Если вы напишете код на C#, он будет генерировать ту же «сборку» .NET, что и VB .NET или F#.
DLL не возвращает «объект C#». DLL возвращает объект .NET.
это DLL .net DLL или обычная DLL Windows. Как вы назвали его функции