【问题标题】:Creating a C++ .Net Core wrapper for native library results in error LNK2028为本机库创建 C++ .Net Core 包装器会导致错误 LNK2028
【发布时间】:2020-12-16 21:43:59
【问题描述】:

我正在尝试为本地库 (Srt) 创建托管(.net 核心)C++/CLI 包装器,但是在本地库中引用方法时,我遇到了 2 个构建错误。我从本机库中引用了标头 srt.h,尝试调用一个名为 srt_cleanup 的方法,但在构建时得到它:

error LNK2028: unresolved token (0A00000B) "extern "C" int __cdecl srt_cleanup(void)" (?srt_cleanup@@$$J0YAHXZ) referenced in function "public: void __clrcall HeliosMediaStreamCliSrt::SrtReceiver::Stop(void)" (?Stop@SrtReceiver@HeliosMediaStreamCliSrt@@$$FQE$AAMXXZ)

error LNK2019: unresolved external symbol "extern "C" int __cdecl srt_cleanup(void)" (?srt_cleanup@@$$J0YAHXZ) referenced in function "public: void __clrcall HeliosMediaStreamCliSrt::SrtReceiver::Stop(void)" (?Stop@SrtReceiver@HeliosMediaStreamCliSrt@@$$FQE$AAMXXZ)

示例:

// pch.h
#ifndef PCH_H
#define PCH_H

#include <srt.h>
#include <stdio.h>
#include <tchar.h>
#include <memory>
#include <map>
#include <stdlib.h>
#endif //PCH_H
// SrtReceiver.h
#pragma once
using namespace System;
namespace TestSrt {
    public ref class SrtReceiver {
    public:
        void SrtReceiver::Stop();

    private:
    };
}
// SrtReceiver.cpp
#include "pch.h"
#include "SrtReceiver.h"
namespace TestSrt {
    void SrtReceiver::Stop() {
        srt_cleanup();
    }
}

项目配置:

General -> Configuration Type: Dynamic Library (.dll)
Advanced -> Common Language Runtime Support: .NET Core Runtime Support (/clr:netcore)
Advanced -> .NET Core Target Framework: .NET 5.0
C/C++ -> General -> Common Language Runtime Support: NetCore

我对 C++ 很生疏,所以我不熟悉构建系统,它会导致令人困惑的错误。我以前从未尝试过在 C++ 中使用 .net 核心做任何事情,因为 C# 比我的速度更快。这看起来与构建属性有关,编译器正在寻找错误的内部方法名称。我该如何解决这个问题?

【问题讨论】:

    标签: c++ .net .net-core srt


    【解决方案1】:

    我只是忘记在 Linker -&gt; Input -&gt; Additional Dependencies: /path/to/srt.lib 中包含 .lib 文件的路径

    简单,但花了数小时的谷歌搜索无济于事。希望这对我没有遇到过的其他 C++ 初学者有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多