c++ - 获取 LNK1107 无效或损坏的文件:尝试链接 OpenSceneGraph 教程的 .dll 时无法在 0x378 处读取
问题描述
我正在尝试在 Visual Studio 上设置 OpenSceneGraph,以便我可以浏览一些教程,我相信我的问题是我不知道如何在 Visual Studio 上正确设置环境并让程序查看库文件正确。
有问题的代码仅用于 osg 智能指针演示
#include <osg/ref_ptr>
#include <osg/Referenced>
#include <iostream>
using namespace std;
class MonitoringTarget : public osg::Referenced
{
public:
MonitoringTarget(int id) : _id(id)
{
cout << "Constructing target " << _id << endl;
}
protected:
int _id;
virtual ~MonitoringTarget()
{
cout << "Destroy " << _id << endl;
}
};
int main()
{
osg::ref_ptr<MonitoringTarget> target = new MonitoringTarget(0);
cout << "Reference count before referring: "
<< target->referenceCount() << endl;
osg::ref_ptr<MonitoringTarget> anotherTarget = target;
cout << "Referenced count after referring: "
<< target->referenceCount() << endl;
}
如果我在 Properties->Linker->additional dependencies 中指向 osgd.lib,这将构建,但是当我尝试运行它时会发生系统错误,指出程序无法启动,因为“您的计算机中缺少 osgd.ll”,但是如果我指向 osgd.dll,它将无法构建并引发以下错误:“LNK1107 无效或损坏的文件:无法在 0x378 OSG1 C:\Users\Monkone\source\OpenSceneGraph-3.6.3-VC2017-64-读取调试\bin\osgd.dll"
我在这里做错了什么?
解决方案
您需要链接到 .lib,而不是 .dll。dll 路径必须在您的 PATH 中才能工作,或者与可执行文件位于同一文件夹中。
推荐阅读
- shell - 为什么shell中的后台进程可以打印到终端?
- python - 如何修复“sqlalchemy.exc.IntegrityError:”?
- python-3.x - 有没有办法比较两个不同的类,如果它们不相同则返回 False
- python - 如何用 BeautifulSoup 等一秒钟来保存汤元素以让页面中的元素加载完成
- gradle - 使用移动应用程序中的 twilio 的短信不起作用
- python - 使用 pivot_table 方法时让列显示月份而不是元组
- sql - 将海量 CSV 文件读入 Oracle 表
- jupyter-notebook - 如何在 jupyter notebook 中渲染 argmax 符号?
- swift - 下拉以在 swift UI 中刷新数据
- javascript - 通过 GPS 坐标查找最近的城市 - 算法