C# [DllImport()]可以处理静态c库吗

C# [DllImport()]可以处理静态c库吗,c#,.net,C#,.net,我可以导入扩展名为.lib的静态C库吗 我的头文件是:extern“C”\uu declspec(dllexport) 我可以使用p/Invoke assistant从标题源代码生成必要的代码,但问题仍然存在 [DllImport()]能否处理已编译的C/C++库文件?DllImport通过引用模块的(.DLL)导出表中定义的条目来工作。LIB文件不是模块,也没有符合.dll的导出表 从MSDN: DllImportAttribute属性提供调用从非托管DLL导出的函数所需的信息。作为最低要求,

我可以导入扩展名为.lib的静态C库吗

我的头文件是:extern“C”\uu declspec(dllexport)

我可以使用p/Invoke assistant从标题源代码生成必要的代码,但问题仍然存在


[DllImport()]能否处理已编译的C/C++库文件?

DllImport
通过引用模块的(.DLL)导出表中定义的条目来工作。LIB文件不是模块,也没有符合.dll的导出表

从MSDN:

DllImportAttribute属性提供调用从非托管DLL导出的函数所需的信息。作为最低要求,您必须提供包含入口点的DLL的名称。-

你的问题是:

[DllImport()]可以处理静态c库吗

没有


但是您可以将.LIB链接到.DLL中(假设您知道c/c++),然后p-invoke生成的DLL,但这是一个间接的解决方案,并不意味着您的问题是“是”

不,您必须将其编译为DLL,并公开函数。这是否意味着我应该使用相同的接口创建本机包装器项目,然后编译自己的DLL,然后将其导入C#应用程序?或者,或者直接使用C++/CLI创建托管接口(我会选择后者,工作量较小),您已经回答了这个问题,但是值得一提的是,有一种方法可以在.NETALONT中导入和使用C++库,但通过间接的方法是否足够包含相同的头文件,为LIB中的每个函数创建包装器,然后编译它?但我认为最简单的方法是在
EXPORTS
部分下列出.DEF文件中的每个函数。比克隆代码容易