目录
1--vs2017包含目录后,引入头文件失败
2--调试TensorRT程序,报“重写虚函数的限制性异常规范比基类虚成员函数少”的错误
3--编译Tensorrt测试程序时,报“无法解析的外部符号,该符号在函数中被引用”的错误
4--参考
可能原因:设置包含目录的平台与实际Debug的平台不一样。
举例:比如一开始本人设置的平台分别是x86和x64,在x64平台设置了包含目录,在x86的平台Debug无法引入头文件。
解决方法:更改平台,并重新设置包含目录。
报错截图:
错误代码:
class Logger : public ILogger
{
void log(Severity severity, const char* msg) override
{
// suppress info-level messages
if (severity != Severity::kINFO)
std::cout << msg << std::endl;
}
} gLogger;
查看原基类虚成员函数ILogger的定义:
解决方法,更改错误代码为:(主要是加上noexcept)
class Logger : public ILogger
{
virtual void log(Severity severity, const char* msg) noexcept override
{
// suppress info-level messages
if (severity != Severity::kINFO)
std::cout << msg << std::endl;
}
} gLogger;
错误截图:
代码:
#include
#include
#include
#include "NvInfer.h"
#include "NvOnnxParser.h"
using namespace nvinfer1;
using namespace nvonnxparser;
class Logger : public ILogger
{
virtual void log(Severity severity, const char* msg) noexcept override
{
// suppress info-level messages
if (severity != Severity::kINFO)
std::cout << msg << std::endl;
}
} gLogger;
int main(int argc, char** argv) {
std::string onnx_filename = "C:/Users/Admin/Desktop/onnx_engin/train90000_test9000.onnx";
IBuilder* builder = createInferBuilder(gLogger);
nvinfer1::INetworkDefinition* network = builder->createNetworkV2(1U << static_cast(NetworkDefinitionCreationFlag::kEXPLICIT_BATCH));
auto parser = nvonnxparser::createParser(*network, gLogger);
parser->parseFromFile(onnx_filename.c_str(), 2);
for (int i = 0; i < parser->getNbErrors(); ++i)
{
std::cout << parser->getError(i)->desc() << std::endl;
}
printf("tensorRT load onnx model...\n");
printf("sucessful!");
return 0;
}
错误原因及解决方法: 使用了x86平台来Debug编译库,需更改为x64
Tensorrt测试程序编写
问题1解决参考
问题2解决参考
问题3解决参考