首页 > 解决方案 > I get the Assertion failure "file_name != nullptr" but only in release mode

问题描述

When I try to run the code in debug mode everything works fine, but when I try to run it in release mode I get the error "file_name != nullptr"(the error comes from fopen). I know what the error means, but I don't know why I get the error and how to fix it

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
    String imageName("C:/Users/x/Desktop/pic.png"); // by default
    if (argc > 1)
    {
        imageName = argv[1];
    }

    Mat image;
    image = imread(imageName, IMREAD_COLOR); // Read the file

    if (image.empty())                      // Check for invalid input
    {
        cout << "Could not open or find the image" << std::endl;
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.
    imshow("Display window", image);                // Show our image inside it.
    waitKey(0); // Wait for a keystroke in the window
    return 0;
}

Error Message:

>-----------Microsoft Visual C++ Runtime Library----------------
>
>
>Debug Assertion Assertion Faild!
>
>Programm: C:\Users\x\...\myProgramm.exe
>File: minkernel\crts\ucrt\src\appcrt\stdio\fopen.cpp
>
>Line: 30
>
>Expression: file_name != nullptr

标签: c++windowsvisual-c++c++17

解决方案


您必须确保在调试和发布模式下使用正确的依赖项(.lib 文件)。


推荐阅读