前言
最近想对深度学习底层原理进行实现,包括反向传播,权重更新,激活函数,损失函数等,所以用C++ VS2019创建一个动态链接库 - DTTNN来实现,并使用Google Test测试框架对DTTNN项目实现进行测试 - GTestDTTNN。
DTTNN项目无法生成.lib 文件
在编译生成GTestDTTNN时出现编译错误,说是无法找到DTTNN.lib。确实,目前的DTTNN项目只是初始阶段,仅实现了加法运算和乘法运算的正向与反向传播方法,且使用了模板类技术来实现,所以不需要导出类或者方法。但是要像生成.lib文件,需要有导出的函数或者类才可以。
导出类或者方法的定义:
_declspec(dllexport)
还有一点要特别注意,那就是如果是想导出整个类,要将上述导出代码放置在类的定义关键字-class与类名之间,不能放在定义类的关键字-class之前,否则也无法生成.lib 文件。
正确的导出类定义如下:
class _declspec(dllexport) Test;
错误的导出类定义如下:
_declspec(dllexport) class Test;
总结
之前没有注意过这些细节,创建的项目也都是仿照之前的实现来做的,所以没有仔细考虑过这些细节的问题,这次刚好遇到,在网上也没有找到相应的问题解决方法,这里分享给大家,或许还有其他方法,如果有同学能够分享,多谢大家!
|