C#-无法访问C++/CLI.dll中包含的方法
C# - Unable to Access Methods Included in C++/CLI .dll
我有两个C++/CLI DLL,正试图与C#一起使用。我正在使用VS10,并已确保DLL适当地包含在"References"文件夹中。
所以,第一个DLL工作得很好。它包含类,因此C#应用程序可以通过以下方式访问类中的函数:1)创建DLL中的类的实例,然后2)"正常"调用函数(例如instanceOfClass.method1();
)。
第二个DLL不起作用在第二个DLL中,所有函数都在全局范围内。没有命名空间作用域或类。我在这里遇到了问题,因为当我试图访问C#应用程序中的其中一个函数时,我会得到一个错误:The name 'fxn' does not exist in the current context.
我已经尝试了以下所有可能的方法来解决该函数:
namespace myDLL { // Tried with and without namespace declaration
class Program {
static void Main(string[] args) {
fxnInitialize();
myDLL.fxnInitialize();
myDLL->fxnInitialize();
}
}
}
我发现的关于这个问题的所有其他问题都是关于带有类的C++DLL的我的问题是:是否可以引用DLL中不属于类的方法
如果可能的话,我做错了什么?我怀疑我可能限制了C#应用程序中的命名空间(或某些范围),不允许它查看DLL 的内容
如果不可能,为什么C#不能不使用"无类"DLL?有没有一种方法可以绕过这一点,或者用另一种方法来避免使用库中的类(为了最容易访问)?
如果不可能,为什么C#不能不使用"无类"DLL?
因为CLR不支持它,所以方法必须始终是类的成员。这与C++对自由函数的支持不匹配。无论如何,C++/CLI编译器通过将它们移动到类中来解决此问题。它的名称为<Module>
,在程序集之外无法访问它。类似于C#中的内部类。实际上也使得这些功能无法访问。
解决它很简单,将它们添加到ref类中。您可以将它们声明为静态。
- 是否可以将要"ShellExecute"的文件包含在 dll 中?如果是这样,"ShellExecute"中的文件位置应该是什么?
- C++将包含的库 (ref DLL) 从根目录更改为另一个位置
- 在 MFC dll 中包含助推互斥头文件时断言
- 有关 DLL 中包含的说明
- vcruntime140_app.dll未包含在Microsoft Visual C 2017重新分布(X64)中
- 如何返回包含来自com dll的多个空字符的BSTR
- 如何包含具有多个 dll/dylib 的外部(共享)库
- C++ ATIOGLXX.pdb 包含查找模块 ATIOGLXX.dll 源代码所需的调试信息
- python永远不能调用包含继承逻辑的c++dll或左右文件
- 如何将我的C++DLL包含在一个单独的项目中
- 调用包含C#功能指针的DLL函数
- 将库和DLL包含在C ++项目中
- 使用Node.js中包含char数组的结构调用C++dll
- 在dll文件中包含C++的curl库
- 使用DLL时应用程序中包含的.lib文件
- 第一次尝试创建一个包含许多类的DLL,捆绑在一个DLL中
- C++ DLL 仅读取安全数组中包含的字符串的第一个字符
- 如何将dll包含为相对路径
- 使用/CLR标志构建的本机dll包含托管类
- DLL包含unordered_map不能用visual studio编译器编译