|
hello!
I`m not a choleric person, but this time i`m 2 steps away from madness!
I need to copy a file from one folder to another, so I`ve learned that i have to use
File.Copy, which is found in mscorlib.dll
I cannot find mscorlib.dll. Moreover, I don`t know how to link a lib to my project, so I usually simply "add existing item..." to my solution, and things just work. Only that this time it seems I can`t find the right mscorlib.dll
I have installed Visual Studio 2005, SP1, SDK for SmartDevices (WIN CE 5.0 and 6.0) - needed for some applications.
Visual Studio is installed in D:\Program Files\
I`ve seen that I have to download .NET Framework 2.0 (or 3.0), and I have downloaded them both from microsoft`s site.
Now, by searching my computer, i find 3 results of mscorlib.dll, in:
D:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v1.0\WindowsCE
C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE
C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\Debugger\BCL
(.Net installs itself without configuring the path)
(Where the hell is v3.0 ?!)
Long story short, how can I get to use File.Copy ?
I have seen that I must write:
<br />
#using <mscorlib.dll><br />
using namespace System;<br />
using namespace System::IO;<br />
By simply writing those lines, without any adding of that lib to my project (or adding any of those 3) I get errors on "identifiers not found".
I `ve seen that mscorlib.dll appears in many System related functions, so I hope someone will know how to make it work...
While waiting for this answer, I`m using fopen to continue working with the data, but I can`t finish my application without create folder and file.copy.
Many thanks for any suggestion!
Shpid3r
|
|
|
|
|
You shouldn't need to pull in mscorlib.dll - it's done automatically.
It looks to me like you're trying to use .NET classes in a native application.
Please post EXACT error messages so we don't have to guess
Also, if you're really writing managed code, please post your questions here:
(Managed) C++/CLI[^]
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Right... It does seem like i`m trying to use native/managed code. But that is not true. This time, it`s a win32 application, not intended for a smart device. Those WinCE findings are simply because I have installed the SDK for native coding.
Anyway, i`m adding my code and my errors:
Code:
<br />
#using < mscorlib.dll ><br />
using namespace System;<br />
using namespace System::IO;<br />
[...].br />
<br />
FileStream^ xmlRegister = File::OpenRead("Settings.ini");<br />
Errors:
<br />
.\ADN FixDlg.cpp(99) : error C2065: 'FileStream' : undeclared identifier<br />
.\ADN FixDlg.cpp(99) : error C2065: 'xmlRegister' : undeclared identifier<br />
.\ADN FixDlg.cpp(99) : error C2653: 'File' : is not a class or namespace name<br />
.\ADN FixDlg.cpp(99) : error C3861: 'OpenRead': identifier not found<br />
Build log was saved at "file://c:\Documents and Settings\Vlad\My Documents\Visual Studio 2005\Projects\ADN Fix\ADN Fix\Release\BuildLog.htm"<br />
ADN Fix - 4 error(s), 0 warning(s)<br />
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========<br />
|
|
|
|
|
Huh?
shpid3r wrote: it`s a win32 application,
To me, a Win32 application is native code. In that case you can't use .NET classes.
Everything you're showing is managed/.NET-related.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Then let me explain how I am creating the project:
First of all, i select visual c++
From there, i select MFC ( if I had chosen Smart Devices, it would have been managed )
Then, MFC Application
After that, I start configuring my application - dialog based, winsockets etc
I am afraid I don`t understand what you mean by .NET classes ... I have seen that mscorlib.dll functions are descriped on a page with a note that the info applies to .NET Framework 3.0 and which provides links to .NET Framework 2.0 and 1.1 for the same information (please see the first link in my initial question)
Shpid3r
|
|
|
|
|
mscorlib is part of the .NET framework.
The System.IO.FileStream class is also in the .NET framework.
The only way you can use classes in the .NET framework from C++ is
using managed code - code compiled to CLR.
An MFC application, by default, is a native application - not compiled to CLR.
There's plenty of ways to access files without using the .NET framework, but
if you want to use .NET, you have to compile the code which uses it to CLR.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Well then, that`s an A answer...
This being told... how can I copy a file without using .net framework ? i don`t 'want' to use .net... I simply thought I had to...
|
|
|
|
|
shpid3r wrote: how can I copy a file without using .net framework ?
A variety of ways...
If you're not concerned with ANSI C++ portablility and you're targeting Windows
You could use CopyFile()[^], CopyFileEx()[^], SHFileOperation()[^]
There's also numerous ways to open, read, write, close files if you want to do the work yourself.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Many thanks, Mark!
Problem solved
Shpid3r
|
|
|
|
|
Mark Salsbery wrote:
There's also numerous ways to open, read, write, close files if you want to do the work yourself.
'Twas one of my first C programs. What a rush that was!
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
What version of visual studio are you using ? one of the "express" versions ? If that's one of those, then you cannot do MFC.
|
|
|
|
|
Actually I`m using VS 8 Pro... and I`m able to download anything (i`m a student and my university is a member of MSDN Academic Alliance)
|
|
|
|
|
Mark Salsbery wrote: You shouldn't need to pull in mscorlib.dll
that's correct you need to reel it in.
|
|
|
|
|
|
Hi
Is there class or function set for working with INI sections not in file, but in set of strings?
I have some database with one text field which contains content of INI file. But I haven't possibility to write this to file on disk and read it after that.
Rgds,
Ernst
|
|
|
|
|
have you searched the web before asking ?
is CIni[^] of any help ?
|
|
|
|
|
toxcct wrote: is CIni[^] of any help ?
Doesn't this class require a file to operate on?
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Can I set an application to run each time with a certain priority without chainging from Windows task manager?
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
Any reason you can't just call
<br />
BOOL WINAPI SetThreadPriority(<br />
HANDLE hThread,<br />
int nPriority<br />
);
on your main thread on startup?
Nothing is exactly what it seems but everything with seems can be unpicked.
|
|
|
|
|
Thank you!
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
<br />
#define NORMAL_PRIORITY_CLASS 0x00000020<br />
#define IDLE_PRIORITY_CLASS 0x00000040<br />
#define HIGH_PRIORITY_CLASS 0x00000080<br />
#define REALTIME_PRIORITY_CLASS 0x00000100<br />
<br />
SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS);<br />
Note that setting the priority too hugh can cause other processes/threads of lower priority to become starved.
Best Wishes,
-Randor (David Delaune)
|
|
|
|
|
Thank you!
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
I need to analyze crash dump (sent by client) in the Windbg.
The problem is that I don't have original .PDB file for my .exe, I only have original project and sources. But when I compile it again, WinDBG does not load new symbols althought I'm 100% sure the sources are correct. Maybe it is by different time stamp.
I'm getting these errors:
*** WARNING: Unable to verify checksum for app.exe
*** ERROR: Module load completed but symbols could not be loaded for app.exe
I'm using correct symbol&exe path and there is no checksum in exe (it's set to 0).
.reload /i does not help
I'm using VC6.0 to compile.
Any ideas how to make it working?
Thank you!
rrrado
|
|
|
|
|
Please help! I am a VB/C# developer and just cannot get the following code to work. It is a checksum routine written in C++ and I am recreating it in VB.NET.
I have pretty much everything in place but there is something not right (ie, it isn't working!);
unsigned long check_sum( int file_ptr )
{
unsigned long check_ul = 0L;
unsigned char temp = '0';
CRC_INIT( check_ul );
while( read( file_ptr, &temp, 1 ) > 0 )
{
if( (temp == '\r') || (temp == '\n') || (temp >= '0' && temp <= '9') )
CRC_DATA( check_ul, temp );
}
CRC_STOP( check_ul );
return( check_ul );
}
/*
* NOTE:
* c is unsigned long
* d is unsigned char or char
*/
#define CRC_INIT( c ) c = 0xffffffffL
#define CRC_DATA( c, d ) c = crc_32_tab[ ( int )(((unsigned char)c^(unsigned char)(d)) & 0xff) ] ^ ( c >> 8 )
#define CRC_STOP( c ) c = c ^ 0xffffffffL
unsigned long crc_32_tab[] =
{ 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,.. ETC, ETC. (256 items)
The line I think I am struggling on is this one;
#define CRC_DATA( c, d ) c = crc_32_tab[ ( int )(((unsigned char)c^(unsigned char)(d)) & 0xff) ] ^ ( c >> 8 )
This is how I am approaching in VB;
Private Function CRC_DATA(ByVal inChar As Char) As Long
'First extract least significant byte from mCheckSum
Dim b As Byte = mCheckSum And &HFF
'Get the numeric value out of the char passed
Dim c As Byte = Val(inChar)
'Exclusive or the above two
Dim d As Byte = b Xor c
'AND the result with FF
Dim e As Byte = d And &HFF
'e is your indexer. Get the byte from lookup table
Dim f As Long = ChecksumBytes(e)
'Finally, XOR the retireved byte with c shifted 8 bits right
'Dim g As Long = f Xor (mCheckSum >> 8)
Dim g As Long = f Xor (mCheckSum >> 8)
Return g
End Function
Any help would be great
Thanks in advance
Richard
|
|
|
|
|
i'm not going to explain all this method, so, what exactly don't you understand ?
(what part, of what lines ?)
|
|
|
|