如何在C#中使用DLL函数而不添加DLL作为引用?

如何在C#中使用DLL函数而不添加DLL作为引用?,c#,dll,namespaces,declaration,C#,Dll,Namespaces,Declaration,我正在尝试使用无法通过Visual Studio添加为引用的DLL中的函数(出现一条消息,说“无法添加引用”)。但是,我从DLL的创建者那里得到了说明,他们建议我在VB.Net中这样使用它们: Private Declare Function Prn_Init Lib "VAx_VPOS396_APPAPI.dll" () As Integer 这是可行的,但现在我想用C语言编写一个程序。我如何将该声明“翻译”为C# 附加:在C++中,声明以一条**文件出现在这些行中: #ifndef _V

我正在尝试使用无法通过Visual Studio添加为引用的DLL中的函数(出现一条消息,说“无法添加引用”)。但是,我从DLL的创建者那里得到了说明,他们建议我在VB.Net中这样使用它们:

Private Declare Function Prn_Init Lib "VAx_VPOS396_APPAPI.dll" () As Integer
这是可行的,但现在我想用C语言编写一个程序。我如何将该声明“翻译”为C#

<>附加:在C++中,声明以一条**文件出现在这些行中:

#ifndef  _VPOS396DLL_API_H
#define  _VPOS396DLL_API_H
VPOS396_DLL_API     int Prn_Init(void);

您应该创建要在C#中使用的方法,将它们设置为
extern
,并添加
[DllImport]
属性。例如:

[DllImport("kernel32.dll")]
static extern bool Beep(uint dwFreq, uint dwDuration);

请参见[System.Runtime.InteropServices.DllImport(“VAx_VPOS396_APPAPI.dll”)]

公共静态外部不安全Int32 Prn_Init(无效)


(“不安全”是可选的)

请格式化您的代码,并尽量避免只回答代码。我使用了此选项(在“静态”之前添加了“private”),但出现了“cannot PInvoke”错误。按照这个速度,我可能需要引用C++样本。C++文件中是否可以使用C++ *.h文件?怎么做?@Yves你得到的确切错误是什么?是否将dll与.NET可执行文件放在同一文件夹中?dll是否有其他依赖项,您是否也包括它们?