我已经继承了一个C++项目,并且需要将它转换为DLL,才能在其他项目中使用它。如何使用Visual Studio 2010中的DEF文件从现有的C++代码生成DLL
该代码是在Visual Studio 2010解决方案中构建的。我能够编译它并生成一个DLL文件,但没有关联的lib文件。我不是一个Windows 8开发者,但目前看来,我需要出口,我想使用的功能,有两种方式:
第一个选择意味着在我想导出的每个类或函数前面手动添加__declspec(ddlexport)。由于有很多类,而且我没有控制所有将与库链接的应用程序,所以第二个选项(DEF文件)看起来更有希望。
有没有什么办法从现有的DLL文件生成一个DEF文件?我试过不同的解决方案:
- 使用expdef。它只是在没有任何信息的情况下崩溃。
使用dumpbin。我没有看到函数名称。就在:
文件类型:DLL
摘要
1000 .data 2000 .idata 18000 .rdata 5000 .reloc 1000 .rsrc 98000 .text 48000 .textbss
罢了。我想这意味着我不会输出任何东西。但是,这正是我想要做的。我该怎么做?
也许这可以帮助你: http://stackoverflow.com/questions/ 14402415/export-function-from-dll-in-visual-studio-2010-using-def – Matz
第一份工作是避免导出* everything *。一个DLL的公共接口需要被设计*,这不是一种将属性代码化的随机行为。如果您确实需要导出C++类,请注意这样做的相当大的危险,那么您非常希望使用__declspec(dllexport)。用DEF文件做这件事是残忍和不寻常的惩罚,一定会出错。 –
对不起,我的哑巴级问题。当我声明一个类时,我有一些公共属性和方法。到现在为止还挺好。现在,假设我们有100个课程。每个班级都有自己的公共属性和成员。在我的(可能是天真的)方法中,我只想将代码打包到一个库(一个DLL文件)中,让其他程序只调用每个类的公共接口。所以,如果我使用“public”来定义这个接口,为什么我需要另一种机制来说明哪些部分必须被视为公共的并且被暴露以被调用? – jorgeas80