2015-12-22 4 views
3

Я пытаюсь создать DLL на C# для использования на нескольких других языках. Я нашел DllExport RGiesecke, но он, похоже, не работает. Он строит просто отлично и делает dll, но когда я открываю его в Dependency Walker, он не показывает никаких функций, и мой код вызова также не может их найти.Нет функций в C# DLL с RGiesecke.DllExport

Я создал новый проект «Библиотека классов» (VS 2013), а затем установил «Неуправляемый экспорт (DllExport для .Net)» из NuGet. Нужны ли какие-либо настройки проекта?

Вот мой код.

using System; 
using System.Collections.Generic; 
using System.Text; 
using RGiesecke.DllExport; 

namespace ToolServiceDLL 
{ 
    public class Class1 
    { 
     [DllExport("addUp", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)] 
     public static double addUp(double num1, double num2) 
     { 
     return num1 + num2; 
     } 

     [DllExport("get5", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)] 
     public static int get5() 
     { 
     return 5; 
     } 
    } 
} 
+0

Он не создает DLL, он * изменяет * DLL. Так что этого не произошло. Одна неприятная ловушка заключается в том, что пакет Nuget не будет корректно устанавливаться, если вы не выполняете VS повышенный уровень, отказ отключается. Щелкните правой кнопкой мыши ярлык VS и выберите «Запуск от имени администратора». –

+0

Я работаю как Admin, и он показывает «RGiesecke.DllExport.Metadata» в ссылках. Как узнать, пытается ли он изменить DLL? – runfastman

ответ

4

Я нашел проблему. Он есть в документации RGiesecke, но я пропустил это. В настройках проекта -> Build-> Platform target: вы не можете установить его на «Любой процессор». Вы должны установить его на x64 или x86 в зависимости от того, хотите ли вы использовать его в 64-битном или 32-битном приложении.

Смежные вопросы