Hi,
I have an unmanaged C library that has calculation functions.
The function has to open a binary file to get data reference.
Then returns a "ReadError" or the result in a User defined structure
I already tried the C function in a console application using C++ and it is working correctly.
But when I convert the C function into a DLL I don't get the same result. It just returns a "ReadError"
Here is my C# equivalent:
I am not sure if I miss out something with some settings in P/Invoke or marshaling, so that it can call my C function properly.
Please help.
TIA
-dantz
I have an unmanaged C library that has calculation functions.
The function has to open a binary file to get data reference.
Then returns a "ReadError" or the result in a User defined structure
Code:
MyStruct Calculate(int itemid, int input1, int input2, double input3) { //initialize variable MyStruct *resultAns; double item1_result = 0; double item2_result = 0; double item3_result = 0; double item4_result = 0; double item5_result = 0; //allocate memory resultAns= (MyStruct*)malloc(sizeof(MyStruct)); //open the file //read file and copy to buffer /* Error happens here */ //close the file //compute final values resultAns->m_item1 = item1_result; resultAns->m_item2 = item2_result; resultAns->m_item3 = item3_result; resultAns->m_item4 = item4_result; resultAns->m_item5 = item5_result; return *resultAns; } struct myCalculatedItem { double m_item1; double m_item2; double m_item3; double m_item4; double m_item5; }; typedef struct myCalculatedItem MyStruct;
I already tried the C function in a console application using C++ and it is working correctly.
But when I convert the C function into a DLL I don't get the same result. It just returns a "ReadError"
Here is my C# equivalent:
Code:
[DllImport("TestLibrary.dll", EntryPoint = "CalAPI")] public static extern MyStruct Calculate(int itemid, int input1, int input2, double input3); [StructLayout(LayoutKind.Sequential)] public class MyStruct { public double item1; public double item2; public double item3; public double item4; public double item5; };
Please help.
TIA
-dantz