在我问问题之前,这里有一些有关我的开发环境的信息:
操作系统: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#“包装器”。
在此先感谢您提供所有答案和提示。
答案 0 :(得分:2)
在Windows上,函数不会自动从DLL导出,无论是在构建自己的源文件(c / cpp)中还是从链接的静态库中导出。
您可以通过在函数声明中添加__declspec(dllexport)
来导出它们,或者可以在项目中添加“模块定义文件(.def)”,并列出要导出的函数。例如,这里的功能foo
可以来自我DLL中包含的静态库。
LIBRARY TEST
EXPORTS
foo @1
因为它根本不创建文件,所以不确定MS是否将其视为错误或功能,但是如果项目没有实际的源文件,则不会创建DLL。您至少需要一个,它甚至可以是空的。