从.lib文件创建一个.dll文件

时间:2018-10-01 13:45:18

标签: c# c++ visual-studio

在我问问题之前,这里有一些有关我的开发环境的信息:

  • 操作系统:Windows 64位

  • IDE:Visual Studio 2013

我想通过C#项目控制设备。我从设备生产商那里得到的是:.h文件和静态库(.lib文件)。在C ++-Console-Application中,控制工作正常。 但是现在我有一些问题要为C#构建DLL

要构建这样的.dll文件,我创建了一个空的C ++ DLL控制台应用程序,将.h文件复制到项目中,并将.lib文件引用到链接器(添加了“附加库指示”和解决方案设置中的“其他依赖项”。

但是在此步骤中,出现了问题。当我构建项目时,控制台会打印

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

日志文件没有显示任何错误,但是在Debug(或Release)文件夹中没有DLL文件。

我尝试的方法:我添加了一个“伪造的” .cpp文件,在其中我实现了.h文件中的功能之一-> dll已构建。因此,我想Visual Studio无法识别.lib文件。

下一步是使用DllImport命令编写C#“包装器”。

在此先感谢您提供所有答案和提示。

1 个答案:

答案 0 :(得分:2)

在Windows上,函数不会自动从DLL导出,无论是在构建自己的源文件(c / cpp)中还是从链接的静态库中导出。

您可以通过在函数声明中添加__declspec(dllexport)来导出它们,或者可以在项目中添加“模块定义文件(.def)”,并列出要导出的函数。例如,这里的功能foo可以来自我DLL中包含的静态库。

LIBRARY TEST
EXPORTS  
   foo @1 

因为它根本不创建文件,所以不确定MS是否将其视为错误或功能,但是如果项目没有实际的源文件,则不会创建DLL。您至少需要一个,它甚至可以是空的。