提问人:tridjam 提问时间:3/7/2023 更新时间:3/10/2023 访问量:276
LNK2001未解析的外部符号__imp_PathIsRelativeA
LNK2001 unresolved external symbol __imp_PathIsRelativeA
问:
我尝试使用带有 OpenVino 的 OpenCV 运行神经网络,但遇到错误LNK2001无法解析的外部符号__imp_PathIsRelativeA
void TestOpenVinoModel()
{
// Model
string mapping_path = "C:\\ROOT1\\opencv_build_test\\files_openvino_2\\ssdlite_mobilenet_v2.mapping";
string xml_path = "C:\\ROOT1\\opencv_build_test\\files_openvino_2\\ssdlite_mobilenet_v2.xml";
string bin_path = "C:\\ROOT1\\opencv_build_test\\files_openvino_2\\ssdlite_mobilenet_v2.bin";
// Load the OpenVINO plugin for OpenCV
Net openvino_model = readNetFromModelOptimizer(xml_path, bin_path);
// Set target device to CPU
openvino_model.setPreferableTarget(DNN_TARGET_CPU);
// Load an image
Mat img = imread("C:\\ROOT1\\opencv_build_test\\car_300x300.jpg");
// Preprocess the image
//Mat blob = blobFromImage(img, 1.0, Size(), Scalar(), true, false);
Mat blob = blobFromImage(img, 0.007843f, Size(300, 300), Scalar(127.5f, 127.5f, 127.5f), false);
//Mat blob;
//cvtColor(img, blob, COLOR_BGR2RGB);
//blob = blob.reshape(1, { 1, 3, 300, 300 });
// Set input data for the network
openvino_model.setInput(blob);
// Run forward pass to get the output
Mat detections = openvino_model.forward();
// Post-process the output to extract the bounding boxes
Mat detections_reshaped = detections.reshape(1, detections.total() / 7);
// Draw bounding boxes on the original image
for (int i = 0; i < detections_reshaped.rows; ++i) {
float confidence = detections_reshaped.at<float>(i, 2);
if (confidence > 0.5) {
int x_left = static_cast<int>(detections_reshaped.at<float>(i, 3) * img.cols);
int y_top = static_cast<int>(detections_reshaped.at<float>(i, 4) * img.rows);
int x_right = static_cast<int>(detections_reshaped.at<float>(i, 5) * img.cols);
int y_bottom = static_cast<int>(detections_reshaped.at<float>(i, 6) * img.rows);
rectangle(img, Point(x_left, y_top), Point(x_right, y_bottom), Scalar(0, 0, 255), 2);
}
}
// Display the resulting image
imshow("Image", img);
waitKey();
}
int main()
{
TestOpenVinoModel();
return 0;
}
我从源代码构建了 OpenVino,然后构建了 OpenCV。我添加了 OpenCV 所需的所有库。 我在 Visual Studio 2022 中使用运行时库多线程 DLL (/MD) 开发程序。
答:
2赞
eltio
3/8/2023
#1
PathIsRelativeA 是 中的 Windows API 函数。
在项目属性中添加到链接器输入后,应解决该问题:“链接器>输入>其他依赖项>配置属性”Shlwapi.dll
Shlwapi.lib
或通过以下编译指示:
#pragma comment(lib, "Shlwapi.lib")
阅读更多:如何在 Visual Studio 中使用 C++ shlwapi 库?
评论
0赞
tridjam
3/9/2023
我尝试下载此库并将其添加到项目中,然后将属性添加到链接器中。但这无济于事。我做错了什么?
0赞
eltio
3/10/2023
您无需下载此库。只需将该行添加到“其他依赖项”并重新生成项目即可。Shlwapi.lib
0赞
tridjam
3/10/2023
我按照你的建议做了,但没有帮助。我想我应该以某种方式将这个库添加到项目中。我怎么能不下载它?
1赞
Ofek Shilon
3/18/2023
@tridjam 该库随 Windows 一起提供,您不需要(也不能)下载它。添加链接器依赖项时需要注意的一点是,要对所有项目配置执行此操作。
评论