Я пытаюсь использовать неуправляемую dll C++ в проекте C#, и я получаю сообщение об ошибке при попытке вызвать функцию, которая говорит, что точка входа не может быть найдена.Точка входа не найдена Исключение
public class Program
{
static void Main(string[] args)
{
IntPtr testIntPtr = aaeonAPIOpen(0);
Console.WriteLine(testIntPtr.ToString());
}
[DllImport("aonAPI.dll")]
public static extern unsafe IntPtr aaeonAPIOpen(uint reserved);
}
Вот DUMPBIN для функции:
5 4 00001020 [email protected]@[email protected]
Я изменил импорт DLL в [DllImport("aonAPI.dll", EntryPoint="?aaeonAPIOpen")]
и [DllImport("aonAPI.dll", EntryPoint="_aaeonAPIOpen")]
и не повезло.
+1, не понимал, что вы можете это сделать. Насколько безопасен этот подход? Изменено ли измененное имя из сборки для сборки или оно согласовано между сборками одного и того же кода? – JaredPar
@ Jared: манипуляция основана исключительно на объявлении функции C++. Вот почему undname.exe может работать. Он стабилен до тех пор, пока декларация не изменится. Это делает его более безопасным *, чем внешняя декларация «C». –