C#中如何正确使用C Dll
How use C Dll in C# properly
你好社区我正在自学编程并坚持使用 dll。
出现错误:
C:
#include <stdio.h>
const char *print(const char *message)
{
if (message != 0) {
const char *message1 = "Connected";
return message1;
message = "";
}
return "Message empty";
}
C#:
public partial class Form1 : Form
{
/*Declaration*/
bool T;
string a;
[DllImport("DLLC.dll")]
static extern string print(string message);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
a = print("Send");
if (T)
{
label1.Text = a ;
T=false;
}
else{
label1.Text = "BAD";
T=true;
}
}
}
正在发短信,因为堆栈溢出不让 post 只是代码:
想法是学习如何在 c# 中使用 c 中的函数。
此外,我想为 OPC UA 服务器使用 open62541 库,并使用 windows 形式制作 UI。
在互联网上没有足够的可理解的信息如何制作包装器和其他程序...YouTube 上没有任何关于这方面的视频。
您需要将 DLL 中的函数标记为已导出。有两种方法可以做到这一点。您可以创建一个 .def
文件并命名导出的函数,或者将说明符 __declspec(dllexport)
添加到函数签名中。
要创建一个 .def
文件,在 Visual Studio 中打开 C DLL 项目,右键单击 "Source Files" 然后在 "Visual C++" -> "Code", select "Module-Definition File (.def)"。在新创建的 .def
文件中,您可以列出要导出的函数,如下所示:
LIBRARY mydll
EXPORTS
function1
function2
function3
然后,当您构建 DLL 时,function1
、function2
和 function3
可用。
此外,请记住,除非您手动指定调用约定(例如 int __stdcall function1(int a, int b);
),否则调用约定默认为 __cdecl
,因此当您添加导入函数的行时通过 P/Invoke,您还必须具有属性 CallingConvention = CallingConvention.CDecl
。未能匹配调用约定将导致调用代码中的堆栈损坏。
你好社区我正在自学编程并坚持使用 dll。
出现错误:
C:
#include <stdio.h>
const char *print(const char *message)
{
if (message != 0) {
const char *message1 = "Connected";
return message1;
message = "";
}
return "Message empty";
}
C#:
public partial class Form1 : Form
{
/*Declaration*/
bool T;
string a;
[DllImport("DLLC.dll")]
static extern string print(string message);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
a = print("Send");
if (T)
{
label1.Text = a ;
T=false;
}
else{
label1.Text = "BAD";
T=true;
}
}
}
正在发短信,因为堆栈溢出不让 post 只是代码:
想法是学习如何在 c# 中使用 c 中的函数。
此外,我想为 OPC UA 服务器使用 open62541 库,并使用 windows 形式制作 UI。
在互联网上没有足够的可理解的信息如何制作包装器和其他程序...YouTube 上没有任何关于这方面的视频。
您需要将 DLL 中的函数标记为已导出。有两种方法可以做到这一点。您可以创建一个 .def
文件并命名导出的函数,或者将说明符 __declspec(dllexport)
添加到函数签名中。
要创建一个 .def
文件,在 Visual Studio 中打开 C DLL 项目,右键单击 "Source Files" 然后在 "Visual C++" -> "Code", select "Module-Definition File (.def)"。在新创建的 .def
文件中,您可以列出要导出的函数,如下所示:
LIBRARY mydll
EXPORTS
function1
function2
function3
然后,当您构建 DLL 时,function1
、function2
和 function3
可用。
此外,请记住,除非您手动指定调用约定(例如 int __stdcall function1(int a, int b);
),否则调用约定默认为 __cdecl
,因此当您添加导入函数的行时通过 P/Invoke,您还必须具有属性 CallingConvention = CallingConvention.CDecl
。未能匹配调用约定将导致调用代码中的堆栈损坏。