编译C++.lib文件使它们成为C#环境的DLL
Compile C++ .lib files make them DLL for C# enviroment
我有很多这样的对象文件库:addrstor.expauthhlp.lib
我想把它们作为一个DLL添加到C#项目中,并尝试使用所涉及的方法。
我怎样才能做到这一点?
感谢
C#非常适合调用"C"函数。一种方法是为C++功能创建一个C适配器:
步骤1:从DLL:中暴露一个C函数
extern "C" __declspec(dllexport) int someMethod(int paramA);
步骤2:导入到C#
[DllImport("your.dll", EntryPoint="someMethod")]
public static extern UInt32 NiceNameFunc(UInt32 paramA);
假设您想要调用从托管(C#)代码调用的本机DLL(C++/libs):
- 确保函数从DLL导出
- 使用任何喜欢的链接器将库链接到DLL
- 使用DllImport注释的方法创建C#类
- 确保您的C#项目设置为与本机DLL相同的位(x86/x64)
如果你想把C++库编译成托管DLL(程序集),你不能这么做。您可以使用托管C++将源代码编译为程序集。
相关文章:
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 枚举环境变量的惯用C++14/C++17方法
- 链接到自行创建的dll失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 启动 dll 时 C# 环境堆栈溢出
- DLL函数在VBA环境中不起作用,但在Excel VBA中工作
- 当InProcServer32键定义DLL的完整路径时,path环境变量中为什么需要COM DLL的路径
- 使用不同的C++环境创建DLL
- DLL(VST插件)中的Qt GUI环境
- DLL 执行程序中的环境路径
- 从 ntdll 调用 Nt 函数.dll在 Win32 环境中,C++
- 编译C++.lib文件使它们成为C#环境的DLL
- 可以在中等信任环境中运行c++ dll
- 如何在单个Windows环境中准备生成.dll和unix .so的构建作业
- 在64位环境中加载本机COM dll