|
Hello ,
I have a problem, I use LoadCursor () , but at runtime it shows me two error messages.
Here is the code:
term.h
void LoadCursor(double latitude,double longitude);
term.cpp
void Term::LoadCursor(double longitude,double latitude)
{
CursorLongitudeCurrent=longitude;
CursorLatitudeCurrent=latitude;
}
nem.h
double ReadLatitudeValue(void);
string ReadLongitude(void);
FormD.h
private: System::Void TMR_RS232Read_Tick(System::Object^ sender, System::EventArgs^ e) {
ptr_Term> LoadCursor(ptr_nem->ReadLatitudeValue(),ptr_nem->ReadLongitudeValue());
}
AND errors:
first:
error LNK2019: unresolved external symbol "public: void __thiscall term::LoadCursorW(double,double)" (?LoadCursorW@term@@$$FQAEXNN@Z) referenced in the function "private: void __clrcall FormD.cpp::Form_D::TMR_RS232Read_Tick(class System::Object ^,class System::EventArgs ^)" (?TMR_RS232Read_Tick@FormD@FormD.cpp@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
Second:
error LNK2028: unresolved token (0A0004AF) "public: void __thiscall term::LoadCursorW(double,double)" (?LoadCursorW@term@@$$FQAEXNN@Z) referenced in the function "private: void __clrcall FormD.cpp::FormD::TMR_RS232Read_Tick(class System::Object ^,class System::EventArgs ^)" (?TMR_RS232Read_Tick@FormD@FormD.cpp@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
if you have an idea
Thank you
modified 26-Mar-14 7:24am.
|
|
|
|
|
|
thank you very much Richard
|
|
|
|
|
I changed the name of the function and I have no error
but my cursor does not appear you have an idea please
modified 26-Mar-14 9:45am.
|
|
|
|
|
LoadCursor just loads the resource, it doesn't change the system cursor to that shape.
We'd need to see your code where you try to use the cursor.
For example, do you use it:
* In response to a WM_SETCURSOR message?
* In a direct call to SetCursor()?
* Passed to RegisterClass?
John
|
|
|
|
|
Since your code does not do anything (as far as we can see) it's difficult to answer that question. What is this function supposed to do?
|
|
|
|
|
Hello thank you for your help.I have 4 function.
Term.h
bool stateCursor; void CreateCursor(PaintEA e);
Term.cpp
void Term::CreateCursor(PaintEA e){
SolidBrush^ blackBrush = gcnew SolidBrush( Color::Black );
SolidBrush^ redBrush = gcnew SolidBrush( Color::Red );
if(CurPointCurrent!=CurPointPrevious) {
int deltaX=CurPointCurrent.X-CurPointPrevious.X;
int deltaY=CurPointCurrent.Y-CurPointPrevious.Y;
float distance= sqrt(pow((float)deltaX,2)+pow((float)deltaY,2));
float vectorX=deltaX/distance*polygoneLength;
float vectorY=deltaY/distance*polygoneLength;
Point point1 = Point(CurPointCurrent.X+vectorX,CurPointCurrent.Y+vectorY);
Point point2 = Point(CurPointCurrent.X+vectorX*-0.866-vectorY*0.5,CurPointCurrent.Y+vectorX*0.5+vectorY*-0.866);
Point point3 = CurPointCurrent;
Point point4 = Point(CurPointCurrent.X+vectorX*-0.866-vectorY*-0.5,CurPointCurrent.Y+vectorX*-0.5+vectorY*-0.866);
array<Point>^ curvePoints = {point1,point2,point3,point4};
if(stateCursor==false) {
e->Graphics->FillPolygon( blackBrush , curvePoints );
stateCursor=true;
}
else {
e->Graphics->FillPolygon( redBrush, curvePoints );
stateCursor=false;
}
}
else{
if(stateCursor==false) {
e->Graphics->FillEllipse( blackBrush , CurPointCurrent.X-circleRadius,CurPointCurrent.Y-circleRadius,circleRadius*2,circleRadius*2);
stateCursor=true;
}
else {
e->Graphics->FillEllipse( redBrush , CurPointCurrent.X-circleRadius,CurPointCurrent.Y-circleRadius,circleRadius*2,circleRadius*2 );
stateCursor=false;
}
}
}
FormD.h
private: System::Void picB_MainMap_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
if(!first_time) {
ptr_Term->CreateCursor(e);
}
}
private: System::Void picB_SubZone_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
if(!first_time) {
ptr_Term->CreateCursor(e);
}
}
Thanks
|
|
|
|
|
Sorry, I don't understand what you are trying to illustrate.
|
|
|
|
|
sorry my english is very bad. I tried to create a cursor. I have a function that nominated
CreateCursor in Term.h and Term.cpp and I call this function in FormD.h but not display the cursor
|
|
|
|
|
|
thank you very much for your help Richard. I found the error, and my program works.
error is not in the code that I've written here
modified 27-Mar-14 6:53am.
|
|
|
|
|
Please help! Even I am experienced in C++ and C#, I am new to C++/CLI.
I have written a simple C# program using WinSCP library. I know how to do it in C# as there is already an example (http://winscp.net/eng/docs/library#csharp[^])
I try to convert but I do not get any success.
#using "WinSCPnet.dll"
using namespace System;
int main(array<System::String ^> ^args)
{
try
{
Console::WriteLine("Staring...");
WinSCP::SessionOptons ^ sftpSessionOptions = gcnew
WinSCP::SessionOptions::SessionOptions (
WinSCP::SessionOptions::Protocol =
WinSCP::Protocol::Sftp,
...
);
...
}
But I get this error:
Error c2061: syntax error: identifer '{ctor}'
why? Please help in the translation.
Yes I have made sure it compiles with '/clr' option.
|
|
|
|
|
|
Richard,
Thanks for your help. I get it. The thing is when I mouse over the new SessionOptions in this line in the C# program,
SessionOptions sessionOptions = new SessionOptions {
Protocol = Protocol.Sftp,
I see SessionOptions.SessionOptions(). With that in mind, when I do the C++ program, I convert that line to:
WinSCP::SessionOptions ^ sftpOptions = gcnew
WinSCP::SessionOptions::SessionOptions()
sftpOptions->Protocol = WinSCP::Protocol::Sftp;
As you can see, that (WinSCP::SessionOptions::SessionOptions()) is not a valid call. I change that to gcnew WinSCP::SessionOptions() and it works! Thanks.
|
|
|
|
|
Hello,..
Hey i dont know how u willtake my suggestion but , i have an idea for u
Use C# to C++ convertor.. it may help you..
int Example::Main()
{
try
{
SessionOptions ^sessionOptions = gcnew SessionOptions {Protocol = Protocol::Sftp, HostName = "example.com", UserName = "user", Password = "mypassword", SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"};
using (Session session = new Session())
Session ^session = gcnew Session();
try
{
session->Open(sessionOptions);
TransferOptions ^transferOptions = gcnew TransferOptions();
transferOptions->TransferMode = TransferMode::Binary;
TransferOperationResult ^transferResult;
transferResult = session->PutFiles("d:\\toupload\\*", "/home/user/", false, transferOptions);
transferResult->Check();
for each (TransferEventArgs ^transfer in transferResult->Transfers)
{
Console::WriteLine("Upload of {0} succeeded", transfer->FileName);
}
}
finally
{
delete session;
}
return 0;
}
catch (Exception ^e)
{
Console::WriteLine("Error: {0}", e);
return 1;
}
This ur sample C# code to C++/CLI.
|
|
|
|
|
I try that converter, but when I compile, there are problems. Thanks for the suggestion.
|
|
|
|
|
Hi, i am working on a project using C and C++.
But now i have to use lil bit of C# code in it.So i made a sample application , converted all the c# code to managed C++/CLI.I changed the properties of sample app to Clr support.It worked fine.
But in my current project, i have some pure c classes also. So when i was changing the property of my project to CLR , it gave me error of xyz.c file cannot convert into \clr.
I dont know wat to do?i cannot convert xyz.c class into xyz.cpp
Can anyone suggest what should i do... Is it possible that i mange to use mannaged c++ also and i still donot have to convert the whole project into CLR.
|
|
|
|
|
You could convert the C code into a DLL which you can then access via P/Invoke from the CLR portion. Unfortunately you cannot convert pure C code to CLR.
|
|
|
|
|
Hi,Thanks for the reply.
I managed to do it by adding a new CLR class and putting all my C Sharp code to it.Automaticaly VS
ask me that wether i would like to convert by my code to CLR.Then it converts all my code to CLR without giving any compile error .
Regards
Shubh
|
|
|
|
|
Hi Richard .. I posted my problem i tried diffrent ways to solve it..like i told you that i found a temporary way to resolve my problem.
But that is not proper solution.
You know what that now i am thinking to use my CLI/C++ code as dll .To call the function in that dll, do i need a wrapper class in my unamanged c++ code .If yes then can you give me an idea or post to implment it.I havenot used wrapper classes before.
Is there any other way to call dll functions.Need your guidance.Thanks in advance.
|
|
|
|
|
As I suggested before, you could just make all your unmanaged copde into a standard DLL. You can then access the functions directly via P/Invoke[^]. I am not exactly sure what you are trying to do with the C code, and whether it would not be better just to convert it all to C#.
|
|
|
|
|
Hey i dont think ,i made my point clear to you.Actually this thing is completely new to me.Thats why i am unable to explain it corectly.
I have unmanaged c++ code.
But now in that i need to use some of the managed i.e C++/CLI code.
That is my main problem .
I tried to search solutions on internet but these solutions made me more confused.
One of the solution said , i should make dll of the managed code .Then i should make one wrapper to call the functions of the dll.Should i do that.
Can't i directly use the functions of dll in my c++ unmanged code like withe help of GetProcAddtress()
without any wrapper class.I am new to all this.
Please Help.I need it .
|
|
|
|
|
I'm afraid it is still not clear exactly what you are trying to do and why you need to mix managed and unmanaged code. I have already explained that you can use the functions of an unmanaged DLL in managed code by using the P/Invoke mechanism (link given in my previous answer). If that does not, or will not work, then you need to give an example of your code and explain what the problem is.
|
|
|
|
|
Okay , i will tell you.What is my problem.
Actually i need to use powershell apis , in my c++ code.As i need to find out the no .of servers in my appfabric cluster.
So the challenge was how to acess powershell in c++ code.
I had one c# code in which i was able to acess powershell properly.
It gives me every information i need to find out..Like wether the appfabric service is running or not.How many servers in cluster.All the info.
Now as my code is in c++ , my biggest challenge is using the c# script in c++,because that
scripts works wonder for me.
So to use that i converted whole of C# code into C++/CLI so that i can use it in my current unmanged c++ code.
Now the problem is adding that C++/CLI code into UNMANAGED CODE so that i can acess powershell in c++.
How to do that mixed mode programming?
|
|
|
|
|