Ответ 1
Добавьте DLL через обозреватель решений - щелкните правой кнопкой мыши по ссылкам → добавьте ссылку, затем "Обзор" в вашей DLL - тогда она должна быть доступна.
Я новичок в С#, и я пытаюсь научиться использовать библиотеки DLL. Я пытаюсь обернуть мои объекты в DLL, а затем использовать его в своей программе.
public class Foo // its in the DLL
{
public int ID;
public void Bar()
{
SomeMethodInMyProgram();
}
}
Поэтому я пытаюсь упаковать это в DLL, но я не могу, потому что компилятор не знает, что такое SomeMethodInMyProgram().
Я хотел бы использовать его как:
class Program // my program, using DLL
{
static void Main(string[] args)
{
Foo test = new Foo();
test.Bar();
}
}
Добавьте DLL через обозреватель решений - щелкните правой кнопкой мыши по ссылкам → добавьте ссылку, затем "Обзор" в вашей DLL - тогда она должна быть доступна.
Зависит от того, какой тип DLL. Это встроено в .NET? если это неуправляемый код, то вот пример, иначе будет работать Ответ от Роба.
Пример неуправляемого C++ dll:
using System;
using System.Runtime.InteropServices;
Вам может понадобиться использовать DllImport
[DllImport(@"C:\Cadence\SPB_16.5\tools\bin\mpsc.dll")]
static extern void mpscExit();
или же
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
Тогда каждый из них называется так:
// a specific DLL method/function call
mpscExit();
// user32.dll is Microsoft, path not needed
MessageBox(new IntPtr(0), "Test", "Test Dialog", 0);
вам нужно фактически загрузить DLL в ваше приложение во время выполнения, таким образом, динамическую часть DLL. Вам также нужен файл заголовка, который определяет, какие функции находятся в DLL, чтобы ваш компилятор знал, какие функции были определены. Мои знания здесь основаны на С++, поэтому, как это работает для С#, я не уверен, но это будет что-то вроде этого...
Я опаздываю на вечеринку здесь, но оставляю этот ответ, потому что кто-то вытаскивает его волосы, как я. Таким образом, в основном у меня не было роскоши VS IDE, когда вы столкнулись с этой проблемой. Я пытался скомпилировать код через cmdline с помощью csc. Чтобы ссылаться на dll, просто добавьте флаг компилятора /r: PathToDll/NameOfTheDll в csc.
Команда будет выглядеть как
csc/r: PathToDll/NameOfTheDll/out: OutputExeName FileWhichIsReferencingTheDll.cs
В FileWhichIsReferencingTheDll.cs добавьте using namespace AppropriateNameSpace;
для доступа к функциям (вызывая class.functionName, если статические или создавая объект класса и вызывая функцию на объекте).