|
Hi!
I have a structure defined in my old unmanaged class, which is a output parameter of one of my methods. I want to create a managed C++ class which "wrappes" my old one.... the question is:
Which Marshall Type Conversion must I use in order to pass the information of this structure to my managed class and viceversa?
CODE
----------------------------------------------------------------------------------
void Extract( Feature* *MyFeature);
----------------------------------------------------------------------------------
Feature is the structure which is really the output of my method...
Thanks in advance!!!
|
|
|
|
|
Hello,
I'm sorry for bothering the members of the list but I really in need of some help from you guys. Actually I was involved in converting a C++ application (which was developed in MS VC++5) environment into a web service. I ported my application (infact a small version of the
actual application) to VC++.Net and it was working
fine in this environment. Just to make a point that I was
using Objectivity/DB (an OODB) on the backend so I've
to include its libs and headers in my code.
My idea was to convert my apllication in to a managed
C++ application and then to further convert it into a
web service. In order to make it a managed application
I complied my application with the "clr" option and
got some comiplation errors which later I sorted out with some efforts. But now I'm getting linker errors.
First of all, I need some comments from the members on the following questions.
Questions;
=========
1) Is VC++.Net mature enough to be selected for this
kind of problems?
2) Can I also use C# instead of VC++.Net in the above
mentioned scenario?
3) Can you help me in the present linking problem?
The source code is attached and following is the error
ecountered while linking the code.
Linking...
dbconnect.obj : error LNK2001: unresolved external
symbol "void __cdecl os_throw_length_error(void)"
(?os_throw_length_error@@$$FYAXXZ)
manDB.obj : error LNK2001: unresolved external symbol
"void __cdecl os_throw_length_error(void)"
(?os_throw_length_error@@$$FYAXXZ)
.\Debug/newTest.exe : fatal error LNK1120: 1
unresolved externals
Please see the code.......
NB. "dbconnect.h" & "dbconnect.cpp" are the actual
files used in VC5/6 env. whereas "manDB.h" and
manDB.cpp" are the wrappers for managed C++
extensions. Also note that i'm just trying to connect
to Objectivity/DB database.
----------------------------------------------------
dbconnect.h
-----------
//Objectivity/DB headers
#include <ooas.h>
class dbconnect
{
public:
dbconnect();
void start_transaction();
~dbconnect();
private:
ooTrans trans;
};
dbconnect.cpp
-------------
#include "dbconnect.h"
#include <iostream.h>
dbconnect::dbconnect()
{
ooInit();
}
void dbconnect::start_transaction()
{
trans.start();
cout << "Transaction started" << endl;
}
dbconnect::~dbconnect()
{
trans.commit();
cout << "destructor called" << endl;
}
manDB.h
-------
#include "dbconnect.h"
#using <mscorlib.dll>
using namespace System;
public __gc class Mclass
{
public:
Mclass();
~Mclass();
void m_start();
private:
dbconnect * m_pC;
};
manDB.cpp
---------
#include "manDB.h"
Mclass::Mclass()
{
m_pC = new dbconnect();
}
Mclass::~Mclass()
{
delete m_pC;
}
void Mclass::m_start()
{
m_pC->start_transaction();
}
void main()
{
Mclass * d;
d->m_start();
}
Thanks in advance for your co-operation/help.
Cheers,
M. Waseem Hassan
waseem
|
|
|
|
|
I am trying to write a managed C++ extension to be used with a project I am working on. All seems to work well except that .NET seems to refuse to recognize any fstream members, and I can't instantiate it. I include it in the stdafx.h. Any help would be greatly appreciated.
|
|
|
|
|
This should work fine - in my simple test I #include <fstream>, then instantiate a fstream object.
The types defined in fstream are in the std namespace. Does your code reflect this?
#include "stdafx.h"
#using <mscorlib.dll>
#include <tchar.h>
#include <fstream>
using namespace System;
int _tmain(void)
{
std::fstream fs;
fs.open("filename");
Console::WriteLine(S"Hello World");
return 0;
}
This posting is provided “AS IS” with no warranties, and confers no rights. You assume all risk for your use. © 2002 Microsoft Corporation. All rights reserved.
|
|
|
|
|
Your code seems to work however, I am unsure of what file for the #using, I have tried the name of the built .dll in my case Test.dll, but I get the error "Could not find assembly Test.dll". Also if I include no filename, it expects one. I am new to Visual C++ .NET Managed Forums, and I would like to thank you for your patience.
|
|
|
|
|
Anonymous wrote:
I am unsure of what file for the #using
Nick didn't format it (;P), the following will need to be included for the source to work:
#include "stdafx.h"
#using <mscorlib.dll>
#include <tchar.h>
#include <fstream>
using namespace System;
Nick Parker
May your glass be ever full.
May the roof over your head be always strong.
And may you be in heaven half an hour before the devil knows you’re dead. - Irish Blessing
|
|
|
|
|
Majid Shahabfar wrote:
How can I convert a managed object to unmanaged object.
For example a Byte(Managed) object to BYTE(Unmanaged)?
Byte to BYTE is easy :-
Byte b1 = 66;
BYTE b2 = b1;
For other types there are various techniques that can be used. If you list your specific requirements, people might be able to help you out.
Regards,
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
I have more or less the same problem...
I have an unmanaged array of floats, for example "float p[x][y]" and i want to convert it to something managed... how should i do it????
Thanks in advance!
|
|
|
|
|
You will want to use members of System.Runtime.InteropServices.Marshal class for many managed to unmanaged and vice-versa conversions.
|
|
|
|
|
I have the following code that I am compiling into an assembly, it compiles fine and when I debug and step through it my i variable is always 0, however when I run the same query in SQL Query Analyzer I get a value of 1130, does anyone have any ideas as to what I am doing wrong here?
int mcpp::MyNumber::GetWebStat()
{
SqlConnection* mySQLConnection;
SqlCommand* sqlCommand;
SqlDataReader* dr;
String* sql;
int i;
try
{
sql = "select count(*) as myCount from site_stats";
mySQLConnection = new SqlConnection(S"server=Nick;database=DeveloperNotes;Integrated Security=yes;");
mySQLConnection->Open ();
sqlCommand = new SqlCommand(sql, mySQLConnection);
dr = sqlCommand->ExecuteReader();
i = Convert::ToInt32(dr->Item["myCount"]);
return i;
}
catch(Exception* e)
{
Console::Write(e->ToString());
}
__finally
{
mySQLConnection->Close();
}
}
Nick Parker
May your glass be ever full.
May the roof over your head be always strong.
And may you be in heaven half an hour before the devil knows you’re dead. - Irish Blessing
|
|
|
|
|
Did you try the same program with C#, just making sure that there is no logical errors.
Cheers
Kannan
|
|
|
|
|
Kannan Kalyanaraman wrote:
Did you try the same program with C#, just making sure that there is no logical errors.
Good idea, I am not sure and will check when I get home.
Nick Parker
|
|
|
|
|
Until u say
Reader->Read(),
the pointer will not go to the first record so that's the reason u are getting 0.
try this
while(Reader->Read)
{
// your code.
}
|
|
|
|
|
Thank you, that was exactly what I needed.
Nick Parker
Not everything that can be counted counts, and not everything that counts can be counted. - Albert Einstein
|
|
|
|
|
hiya is there a way to set a dos prompt to default another drive or directory instead of the c:\
thanks,
grahamoj.
|
|
|
|
|
from run in the start menu:
command /k d:
if you want to default to some directory, you can put it in a batch file.
test.bat:
d:
cd d:\mydir\thisone\
then do:
command /k test.bat
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
Aren't they all. Ok, actully I am not sure as to why I am getting this, or even what it really means. I am simply writing a MC++ assembly that does some data access. There error points to this line here:
mySQLConnection = new SqlConnection(S"server=local;Trusted_Connection=yes;database=DeveloperNotes;");
However I have this declared above it:
SqlConnection * mySQLConnection;
I have included the following:
#using <mscorlib.dll>
#using <system.data.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;
using namespace System::Xml;
Does anyone have any ideas about this error?
c:\Documents and Settings\User\Desktop\new_article\mcpp\mcpp.cpp(18): error C3624: 'System::ComponentModel::Component': the compiler cannot find this type; it is defined in the assembly 'System'
Nick Parker
May your glass be ever full.
May the roof over your head be always strong.
And may you be in heaven half an hour before the devil knows you’re dead. - Irish Blessing
|
|
|
|
|
Geez, I decided to walk away and came back to my computer 2 hours later, looked at my screen and realized that I was missing this statement:
#using <System.dll>
All Fixed.
Nick Parker
May your glass be ever full.
May the roof over your head be always strong.
And may you be in heaven half an hour before the devil knows you’re dead. - Irish Blessing
|
|
|
|
|
It's because SqlConnection is derived from Component, and the types reside in different assemblies.
Nick
This posting is provided “AS IS” with no warranties, and confers no rights. You assume all risk for your use. © 2002 Microsoft Corporation. All rights reserved.
|
|
|
|
|
Nick,
First off thanks, I don't want to bug you however it doesn't seem like this forum gets as much attention as some of the others. Could you take a look at thread I posted above: http://www.codeproject.com/script/comments/forums.asp?msg=346059&forumid=3785#xx346059xx[^]. I have no idea why I am getting 0 back all the time. This code, once it works will be a class written in MC++ and instantiated in C# as a web service. I hadn't seen anything like it yet so I thought it would be interesting to try. Thanks.
Nick Parker
May your glass be ever full.
May the roof over your head be always strong.
And may you be in heaven half an hour before the devil knows you’re dead. - Irish Blessing
|
|
|
|
|
Hi,
I have been working with turbo C++ for sometime...But I have not come accross a method to connect a C++ prog to any database. Could anyone help me on this?
Thank you in anticipation.
Sreejit
|
|
|
|
|
ADO, DAO, OLE DB, ODBC. http://msdn.microsoft.com[^]
Christian
No offense, but I don't really want to encourage the creation of another VB developer. - Larry Antram 22 Oct 2002
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
I just created a C++ Managed Web Service and now it's residing on my
'Localhost'. I want to copy it to another web server, but I cannot
find the "Copy Project" option under the "Project" menu. (This option did exist when I was working with ASP.NET applications, but I can't find it when I work with C++ web applications/services)
I also tried creating a Web Deployment project, but I realize that I
cannot run the Windows installer file on the other server because it
belongs to my web host. It is not my own server. After copying the
installer files to that server, I do not know how to remotely execute
it.
How can I work around these problems to deploy my web service on that
server? Thanks.
|
|
|
|
|
Need help with making a C++ program. If anyone is really good with it and can help me out, add me on MSN messenger or yahoo messenger. Thanks
hiloguy@hotmail.com
the_crazy_nemesis@yahoo.com
|
|
|
|
|
What, ANY C++ program ?
#include <iostream>
int main()
{
std::cout << "hello world";
return 0;
}
Christian
No offense, but I don't really want to encourage the creation of another VB developer. - Larry Antram 22 Oct 2002
Hey, at least Logo had, at it's inception, a mechanical turtle. VB has always lacked even that... - Shog9 04-09-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|