RGiesecke.DllExport 的 C# DLL 中没有函数
No functions in C# DLL with RGiesecke.DllExport
我正在尝试用 C# 制作一个 DLL,以便在其他几种语言中使用。我找到了 RGiesecke 的 DllExport,但它似乎不起作用。它构建得很好并生成了一个 dll,但是当我在 Dependency Walker 中打开它时它没有显示任何函数,而且我的调用代码也找不到它们。
我创建了一个新的 "Class Library" 项目 (VS 2013),然后从 NuGet 安装了 "Unmanaged Exports (DllExport for .Net)"。我需要任何项目设置吗?
这是我的代码。
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;
}
}
}
我发现了问题。它在 RGiesecke 文档中有,但我错过了。在project settings->Build->Platform target: 你可以不设置为"Any CPU"。您必须将其设置为 x64 或 x86,具体取决于您是想在 64 位还是 32 位应用程序中使用它。
我遇到了类似的问题,但已经将平台目标设置为 x64 并出现以下错误:
The name 'CallingConvention' does not exist in the current context
我发现添加 using 指令 System.Runtime.InteropServices
解决了问题。
这是个好问题,对我有用。由于 Python 方面我犯了一个错误,所以花了比应该多一点的时间。这是 Python3 中的工作代码
import sys
import clr
sys.path.insert(0,'C:\your_path\Py2NetComm\bin\Debug')
clr.AddReference("Py2NetComm")
import ToolServiceDLL as p2n
ret = p2n.Class1.addUp(2,3)
print("addUp:", ret)
我正在尝试用 C# 制作一个 DLL,以便在其他几种语言中使用。我找到了 RGiesecke 的 DllExport,但它似乎不起作用。它构建得很好并生成了一个 dll,但是当我在 Dependency Walker 中打开它时它没有显示任何函数,而且我的调用代码也找不到它们。
我创建了一个新的 "Class Library" 项目 (VS 2013),然后从 NuGet 安装了 "Unmanaged Exports (DllExport for .Net)"。我需要任何项目设置吗?
这是我的代码。
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;
}
}
}
我发现了问题。它在 RGiesecke 文档中有,但我错过了。在project settings->Build->Platform target: 你可以不设置为"Any CPU"。您必须将其设置为 x64 或 x86,具体取决于您是想在 64 位还是 32 位应用程序中使用它。
我遇到了类似的问题,但已经将平台目标设置为 x64 并出现以下错误:
The name 'CallingConvention' does not exist in the current context
我发现添加 using 指令 System.Runtime.InteropServices
解决了问题。
这是个好问题,对我有用。由于 Python 方面我犯了一个错误,所以花了比应该多一点的时间。这是 Python3 中的工作代码
import sys
import clr
sys.path.insert(0,'C:\your_path\Py2NetComm\bin\Debug')
clr.AddReference("Py2NetComm")
import ToolServiceDLL as p2n
ret = p2n.Class1.addUp(2,3)
print("addUp:", ret)