|
I have a C++ win32 console application (built using Visual Studio 2005). I have complete code. I need to convert this console application to a dll and I want to call this DLL in a ASP.Net web service (Just because I know how to create an ASP.Net webservice). I am totally new to C++ programming but now I am getting better at it.
I have successfuly created the DLL of that console app (by changing project properties)and also imported the DLL function successfuly. I can debug the dll code when called from my C#/C++ managed console app (I have tried both C++ and C#).
The problem is when ever the code in DLL uses a std::vector, or any other STL based contianers. The code gives exception i.e.
An unhandled exception of type 'System.AccessViolationException' occurred in C++ManagedConsole.exe
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
can someone please point me to a possible solution for this problem. Though I have the code but I cant just remove all the code using the std::vector, or other containers.
Thanking in advance for any kind of hints.
|
|
|
|
|
|
Thanks for the good suggestion. I cant find a way to move this to that forum. I am adding this question now.
|
|
|
|
|
s.m.shah wrote: I cant find a way to move this to that forum
actually, there's none. only Administrators can move a thread, so don't care too much of this.
but asking the right forum will certainly bring you much relevant answers
|
|
|
|
|
Hi,
In my coding,I used some arrays in structure and i stored values in memroy in size of that structure.
And also i give the memory limit to store that particular varialbe in that memrory address.
For example
struct de
{
float IV [300];
char FAIL [300];
}s;
I have one offset file showing memory details for that particular varialbe.The offset file looks like this
as
Variable name
SCope(Variable or Constant)
varialble type(float(2) or int(1) or char(0))
Memory address
Size1
size2
//////////////
FAIL
V
0
0
300
-1
IV
V
2
300
300
-1
///////////////
Like this i have offset file and i stored value for this two varaibles in my coding and i set memory also.But when i retrive this value by using pointer
I get the correct value of variable of char but in case of float it shows 0 only.
Is there any tool to see the value stored in particular memory address?
Anu
|
|
|
|
|
Yes, the debugger.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Anu_Bala wrote: Is there any tool to see the value stored in particular memory address?
1. Put a break point near the variable you want to check.
2. Start debugging.
3. From Debug menu, open up the auto, locals and memory window
4. Get the startig address. For instance, if you have an array like int *pIntArray, look for its address in the locals / auto window. Copy it.
5. Paste it in the memory window.
After this, any modification at that address will be indicated in the memory window.
Hope this helped.
Signature is a waste of time. I'll have one when I've got enough time to create. Well, I had enough a few seconds back.
|
|
|
|
|
hi everyone,
good afternoon to all.rajesh is right i am girl not guy ok.. i have one function called writecard(),
long CACR120RWBLOCK1Dlg::writecard(BYTE BLCK, CString strData)
{
int ctr;
int x;
//writecard(BLCK,strData) = -1;
BYTE dout[15];
for (ctr=0;ctr<=15;ctr++)
{
dout[ctr]=atoi("");
}
x=strlen(strData);
for(ctr=0;ctr<=x-1;ctr++)
{
dout[ctr]=strData[ctr+1];
}
retcode = ACR120_Write(rHandle, BLCK, dout[0]);
//writecard(BLCK,strData) =retcode;
return retcode;
}
this function i am using in my main write function or in write function i am calling this function. but i am getting one problem is that the value of retcode is not assigning in main write function.please tell me how can write this function. in main write function is like this:
void CACR120RWBLOCK1Dlg::OnWrite()
{
BYTE BLCK;
BYTE ResultSN[11];
BYTE TagType[50];
BYTE ResultTag;
char SN[100];
int ctr;
int x;
//writecard()
BYTE dout[15];
BLCK =0;
sec = 2;
BLCK = sec * 4 + BLCK;
//retcode = ACR120_Write(rHandle, BLCK, dout[0]);
writecard(BLCK,m_MemId);
if(retcode >= 0)
{
}
else
{
messagebox();
}
}
please help me out.....
thanks in advance.
savitri:
|
|
|
|
|
this is quite unreadable.
please edit your post (with the "edit" button on it - not by submitting the same post again) and place your code sample into <pre></pre> blocks.
this will format the code and keep the indentation...
|
|
|
|
|
please refer l-value[^]
writecard(BLCK,strData) = retcode; will not evalutes to assignment expression.
join Book-Buying Band[^]
this time,
long CACR120RWBLOCK1Dlg::writecard(BYTE BLCK, CString strData)
{
int ctr;
int x;
long retcode = -1;
....
retcode = ACR120_Write(rHandle, BLCK, dout[0]);
return retcode;
}
void CACR120RWBLOCK1Dlg::OnWrite()
{
....
long retcode = writecard(BLCK,m_MemId);
if(retcode >= 0)
{
}
else
{
messagebox();
}
}
savitri wrote: i am girl not guy ok..
I think most of us wont bother.
|
|
|
|
|
Rajkumar R wrote: join Book-Buying Band[^]
You still remember!
Maxwell Chen
|
|
|
|
|
How possibly can you forget savitri and her dire posts?
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
Rajesh R Subramanian wrote: How possibly can you forget savitri and her dire posts?
Maxwell Chen
|
|
|
|
|
especially the experience of déjà vu
|
|
|
|
|
|
if(retcode >=0)
{
writecard(BLCK,m_Date);
}
else
{
MessageBox("Error in writing exp date");
}
now i am not able to write the data into the card run time error is coming. my full code is like this:
long CACR120RWBLOCK1Dlg::writecard(BYTE BLCK, CString strData)
{
int ctr;
int x;
//writecard(BLCK,strData) = -1;
retcode=-1;
BYTE dout[15];
for (ctr=0;ctr<=15;ctr++)
{
dout[ctr]=atoi("");
}
x=strlen(strData);
for(ctr=0;ctr<=x-1;ctr++)
{
dout[ctr]=strData[ctr+1];
}
retcode = ACR120_Write(rHandle, BLCK, dout[0]);
StrMsg.Format("Retcode:%d",retcode);
LstIndx=m_List.AddString(StrMsg);
//writecard(BLCK,strData) =retcode;
return retcode;
}
and my write function is like this:
void CACR120RWBLOCK1Dlg::OnWrite()
{
// TODO: Add your control notification handler code here
BYTE BLCK;
BYTE ResultSN[11];
BYTE TagType[50];
BYTE ResultTag;
char SN[100];
int ctr;
int x;
//writecard()
BYTE dout[15];
//int ctr;
//VerifyKeyA(2);
retcode = ACR120_Select(rHandle, TagType, &ResultTag, ResultSN);
StrMsg.Format("retcode:%d",retcode);
LstIndx=m_List.AddString(StrMsg);
//'Check if Retcode is Error
if (retcode < 0)
{
//MessageBox("Error in select");
StrMsg.Format("Error Select: %d", retcode);
LstIndx = m_List.AddString(StrMsg);
}
else
{
//VerifyKeyA(2);
StrMsg.Format("Select Card Success: %d", retcode);
LstIndx=m_List.AddString(StrMsg);
sprintf(SN,"%s","");
if ((TagType[0] == 4) || (TagType[0] == 5))
{
memcpy(SN,ResultSN, 7);
StrMsg.Format("Card Serial: %02x %02x %02x %02x %02x %02x %02x ",ResultSN[0],ResultSN[1],ResultSN[2],ResultSN[3],ResultSN[4],ResultSN[5],ResultSN[6] );
}
else
memcpy(SN,ResultSN, ResultTag);
if (ResultTag == 4)
StrMsg.Format("Card Serial: %02x %02x %02x %02x ",ResultSN[0],ResultSN[1],ResultSN[2],ResultSN[3] );
else if (ResultTag == 7)
StrMsg.Format("Card Serial: %02x %02x %02x %02x %02x %02x %02x ",ResultSN[0],ResultSN[1],ResultSN[2],ResultSN[3],ResultSN[4],ResultSN[5],ResultSN[6] );
else if (ResultTag == 10)
StrMsg.Format("Card Serial: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x ",ResultSN[0],ResultSN[1],ResultSN[2],ResultSN[3],ResultSN[4],ResultSN[5],ResultSN[6],ResultSN[7],ResultSN[8],ResultSN[9] );
//m_Sno.FormatMessage(SN);
//StrMsg.Format("SN:%s",SN);
m_List.AddString(StrMsg);
}
m_List.SetCurSel(LstIndx);
pKey[0]= 255;
pKey[1]= 255;
pKey[2]= 255;
pKey[3]= 255;
pKey[4]= 255;
pKey[5]= 255;
sec=2;
//Login Command Function
retcode = ACR120_Login(rHandle, sec, 0xAA, 0, pKey);
StrMsg.Format("retcode: %d", retcode);
LstIndx=m_List.AddString(StrMsg);
//'check if retcode is error
if (retcode < 0)
{
StrMsg.Format("Error Login: %d", retcode);
LstIndx=m_List.AddString(StrMsg);
//m_cSNO=StrMsg;
//LstIndx = strlen(m_cSNO);
}
else
{
MessageBox("Login Success:");
//m_SNO=StrMsg;
//m_SNO="Log at Sector: 1";
//LstIndx = strlen(m_SNO);
m_ReadBlk.EnableWindow(true);
m_WriteBlk.EnableWindow(true);
//Result=true;;
}
BLCK =0;
sec = 2;
BLCK = sec * 4 + BLCK;
//retcode = ACR120_Write(rHandle, BLCK, dout[0]);
retcode=writecard(BLCK,m_MemId);
if(retcode >= 0)
{
//writecard(BLCK,m_MemId);
}
else
{
MessageBox("Error in writing");
}
BLCK =1;
sec=2;
BLCK=sec*4+BLCK;
retcode=writecard(BLCK,m_Memname);
if(retcode>=0)
{
//writecard(BLCK,m_Memname);
}
else
{
MessageBox("Error in writing name of Employee");
}
BLCK=2;
sec=2;
BLCK=sec*4+BLCK;
retcode=writecard(BLCK,m_Date);
if(retcode>=0)
{
//writecard(BLCK,m_Date);
}
else
{
MessageBox("Error in writing exp date");
}
//VerifyKeyA(3) ;
pKey[0]= 255;
pKey[1]= 255;
pKey[2]= 255;
pKey[3]= 255;
pKey[4]= 255;
pKey[5]= 255;
sec=3;
//Login Command Function
retcode = ACR120_Login(rHandle, sec, 0xAA, 0, pKey);
StrMsg.Format("retcode: %d", retcode);
LstIndx=m_List.AddString(StrMsg);
//'check if retcode is error
if (retcode < 0)
{
StrMsg.Format("Error Login: %d", retcode);
LstIndx=m_List.AddString(StrMsg);
//m_cSNO=StrMsg;
//LstIndx = strlen(m_cSNO);
}
else
{
MessageBox("Login Success:");
//m_SNO=StrMsg;
//m_SNO="Log at Sector: 1";
//LstIndx = strlen(m_SNO);
m_ReadBlk.EnableWindow(true);
m_WriteBlk.EnableWindow(true);
//Result=true;;
}
BLCK=0;
sec=3;
BLCK=sec*4+BLCK;
retcode=writecard(BLCK,m_Balance);
if (retcode>=0)
{
//writecard(BLCK,m_Balance);
}
else
{
MessageBox("Error in writing balance");
}
}
my retcode and rhandle value is of type integer.
please help me.
thanku,
savitri
|
|
|
|
|
F*CK !!!
did you read my answer ??????
edit you message and place you code samples within <pre></pre> html tags !
and read the posting guidelines too; especially the one saying that you should post relevant pieces of code, not a whole huge code file
come on, grow up a little
|
|
|
|
|
it is not java code so it is in c++. i am learning VC++. so how shall i use
and ,
.please help me out.
thanku for answering to my q's,
savitri
|
|
|
|
|
savitri wrote: it is not java code so it is in c++.
then ? I don't understand in what my remark is related to Java !?
savitri wrote: i am learning VC++.
yes, i've figured that out for days now.
savitri wrote: so how shall i use
yes, exactly, but use <pre> to place code samples only.
and don't post your whole program code.
ask for a specific question with a small code example to illustrate your issue.
|
|
|
|
|
toxcct wrote: I don't understand in what my remark is related to Java !?
May be this one?
toxcct wrote: F*CK !!!
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
Rajesh R Subramanian wrote: May be this one?
toxcct wrote:
F*CK !!!
lol, good one
|
|
|
|
|
Rajesh R Subramanian wrote: May be this one?
toxcct wrote:
F*CK !!!
That is indeed a Java keyword
codito ergo sum
|
|
|
|
|
Why did you have to post this much of code? If you keep repeating your mistakes, people will start to ignore you and then you may have no option but to buy a book. (No more free help? OMG!)
Please only post the piece of code that is relevant to your query.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
hey, asking codeproject is not an alternative to buying a book !
she should really buy one and learn from there...
|
|
|
|
|
That was a sarcastic note, from my side.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|