You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio的测试项目中正确引用C++生成的DLL文件

问题核心原因

Windows平台下构建DLL项目时,如果有对外暴露的接口,编译器会同步生成后缀为.lib的导入库,这个文件是链接阶段用来解析DLL接口调用的必备文件,和静态库的.lib不是同一概念,你当前的报错就是因为缺少这个导入库,或者测试项目没有正确找到它。


步骤1:配置DLL项目生成导入库

你需要给Matrix项目中对外暴露的类、函数添加导出标记,否则VS不会生成对应的.lib导入库。
在Matrix.h头部添加如下宏定义:

// 仅在Matrix项目编译时会预定义MATRIX_EXPORTS宏
#ifdef MATRIX_EXPORTS
#define MATRIX_API __declspec(dllexport)
#else
#define MATRIX_API __declspec(dllimport)
#endif

然后给需要对外暴露的类添加该标记,例如:

class MATRIX_API Matrix {
    // 类定义内容
};
// 如果是模板类,需要补充显式实例化导出
template class MATRIX_API MatrixX<int>;

修改后重新编译Matrix项目,此时输出目录下会同时生成Matrix.dll和Matrix.lib两个文件。

步骤2:修正测试项目链接配置

你之前的配置有两处错误:

  • 附加依赖项中需要添加的是Matrix.lib,而非Matrix.dll,DLL仅在程序运行阶段加载,链接阶段不需要用到DLL文件
  • 确认「链接器 > 常规 > 附加库目录」指向的是Matrix.lib所在的输出目录,从你的构建日志看该路径为D:\data\dev\quasar\cpp\MatrixUnitTest\Debug\,确认该目录下已存在编译生成的Matrix.lib

可选优化

因为你已经在测试项目中添加了对Matrix项目的引用,只要Matrix项目正确生成了Matrix.lib,VS会自动处理链接依赖,不需要手动在附加依赖项中添加Matrix.lib,也不需要手动配置附加库目录,仅保留附加包含目录配置即可。

后续运行注意事项

测试项目构建成功后,运行时需要确保Matrix.dll和测试程序的可执行文件在同一目录,或者将DLL所在目录加入系统PATH,否则会出现运行时找不到DLL的报错。

另外构建日志中的C4812警告是因为MatrixX.h中构造函数的声明语法不符合C++标准,按提示修改为MatrixX<scalarType>::MatrixX格式即可消除警告,不影响当前链接问题的解决。


内容的提问来源于stack exchange,提问作者Quasar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:45:01