I am using the latest MinGW to compile my c++ code with g++ compiler on Windows 10. The code compiles without errors but when I run the execution file it gives the error: The procedure entry point _ZNSt6chrono3_V212system_clock3nowEv could not be located in the dynamic link library A:CodeDAA Assignments2outputunsorted1.exe
The confusing part is that the same code runs totally fine when compiled with cygwin but gives this error only in MinGW. I also tried reinstalling MinGW multiple times. I checked the MinGW folder, it does have the chrono library, so why is it not finding the entry point. Another weird thing is that the end of the error says "in dynamic link library A:CodeDAA Assignments2outputunsorted1.exe" which is the address of my execution file, so why is the program referring to it as library?
My cpp code:
#include<iostream>
#include<fstream>
#include<chrono>
#include"quicksort.cpp"
using namespace std;
int main()
{
ifstream inp_file;
ofstream out_file;
ofstream time_file;
//First file
int *arr1 = new int[100000];
int *arr2 = new int[100000];
//Iterative quick sort
inp_file.open("file1.txt");
for(int i=0;i<100000 ;i++)
{
inp_file>>arr1[i];
inp_file>>arr2[i];
}
inp_file.close();
out_file.open("iterative_quick_sorted_file1.txt");
auto start = chrono::high_resolution_clock::now();
iterQuicksort(arr1,0,99999);
auto elapsed = chrono::high_resolution_clock::now() - start;
double microseconds = (double)chrono::duration_cast<chrono::microseconds>(elapsed).count()/1000;
time_file.open("unsorted_iterative_quick_sort_time1.txt");
time_file<<microseconds;
time_file.close();
for(int i=0;i<100000;i++)
{
out_file<<arr1[i]<<"
";
}
out_file.close();
//Recursive quick sort
out_file.open("recursive_quick_sorted_file1.txt");
start = chrono::high_resolution_clock::now();
recQuicksort(arr2,0,99999);
elapsed = chrono::high_resolution_clock::now() - start;
microseconds = (double)chrono::duration_cast<chrono::microseconds>(elapsed).count()/1000;
time_file.open("unsorted_recursive_sort_time1.txt");
time_file<<microseconds;
time_file.close();
for(int i=0;i<100000;i++)
{
out_file<<arr2[i]<<"
";
}
out_file.close();
return 0;
}
quicksort.cpp :
void swap(int *a,int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int partition (int *arr, int low, int high)
{
int pivot = arr[high]; // pivot
int i = (low - 1); // Index of smaller element
for (int j = low; j <= high- 1; j++)
{
// If current element is smaller than or
// equal to pivot
if (arr[j] <= pivot)
{
i++; // increment index of smaller element
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void iterQuicksort(int *arr,int l, int h)
{
int *stack = new int[h - l + 1];
int top = -1;
stack[++top] = l;
stack[++top] = h;
while (top >= 0) {
h = stack[top--];
l = stack[top--];
int p = partition(arr, l, h);
if (p - 1 > l) {
stack[++top] = l;
stack[++top] = p - 1;
}
if (p + 1 < h) {
stack[++top] = p + 1;
stack[++top] = h;
}
}
}
void recQuicksort(int *arr,int l,int h)
{
if(l<h)
{
int pivot = partition(arr,l,h);
recQuicksort(arr,l,pivot-1);
recQuicksort(arr,pivot+1,h);
}
}
command used for compiling:
g++ outputunsorted1.cpp -o outputunsorted1
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…