美文网首页
DLL封装之——OpenFace框架中Utilities项目部分

DLL封装之——OpenFace框架中Utilities项目部分

作者: 芦苇_ba36 | 来源:发表于2018-10-08 16:54 被阅读0次

新建一个解决方案,项目名称为Utilities,解决方案名称为UtilitiesDLL。不勾选预编译头,以防后面出现不必要的错误。

将OpenFace中的lib文件夹加到UtilitiesDLL文件夹中(所有的文件最好是在根目录下,后一级或者后几级,否则有可能找不到。如放在跟根目录同级的C++ Programs这个文件夹下就会报错)。然后将Utilities文件夹中的Include和src文件夹,Utilities项目工程加到DLL项目文件夹中去,删掉原本的Utilities.cpp文件。

通过这样设置之后好像不用更改附加包含目录了,原因是这个项目中原本就有继承过来的附加包含目录,它们是这样的:

之后就是常规操作了,我尝试导出的第一个类是ImageCapture,首先在头文件中定义宏,然后就可以直接导出了。

新建一个解决方案测试我们的DLL,将原DLL项目中生成的.lib 、.dll 、.h文件加入到新项目中。我加入的是项目文件夹里,未测试放于其他目录下是否会报错。在新项目中同样也要设置第三方工具包的包含路径即3rdparty。

!!!然后,一直报这个错!!!

我花了三天时间才找到原因。首先对错误进行分析,链接时错误,跟dll无关,因为dll是运行时才会被调用,不会在编译时出错。那么,唯一有可能的就是.lib文件有问题。那问题就出在生成dll的时候了,是一步步按照操作来的,所以为什么出错了呢?后来看到下面一段话才恍然大悟,最后的解决办法是,在预处理器命令中加入了UTILITIESEXPORT,再把新的文件复制到测试工程中来,终于没有报错了!

stack flow上的一个回答,第一个使我受到启发:

https://stackoverflow.com/questions/6840576/how-to-export-a-c-class-from-a-dll

相关文章

网友评论

      本文标题:DLL封装之——OpenFace框架中Utilities项目部分

      本文链接:https://www.haomeiwen.com/subject/ulghwftx.html