|
I used VC++ 6.0 to make wmi program ,why the flowing err (Windows2003 CN + SP1)
I searched the answer on internet,google,yahoo,or others,and can't resolved
I had set the include path and lib path "C:\Program Files\Microsoft Platform SDK\Include" and "C:\Program Files\Microsoft Platform SDK\Lib",and make this path first, please help me
--------------------Configuration: wmi - Win32 Debug--------------------
Linking...
wbemuuid.lib : warning LNK4003: invalid library format; library ignored
wbemuuid.lib : warning LNK4003: invalid library format; library ignored
wmi.obj : error LNK2001: unresolved external symbol _CLSID_WbemLocator
wmi.obj : error LNK2001: unresolved external symbol _IID_IWbemLocator
Debug/wmi.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
wmi.exe - 1 error(s), 0 warning(s)
--------------------------------code---------------------------------------
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <windows.h>
#include <wbemidl.h>
#pragma comment(lib, "wbemuuid.lib")
int main()
{
IWbemLocator *pLoc = 0;
HRESULT hr;
hr = CoCreateInstance(CLSID_WbemLocator, 0,
CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc);
if (FAILED(hr))
{
cout << "Failed to create IWbemLocator object. Err code = 0x"
<< hex << hr << endl;
CoUninitialize();
return hr; // Program has failed.
}
IWbemServices *pSvc = 0;
// Connect to the root\default namespace with the current user.
hr = pLoc->ConnectServer(
BSTR(L"ROOT\\DEFAULT"),
NULL, NULL, 0, NULL, 0, 0, &pSvc);
if (FAILED(hr))
{
cout << "Could not connect. Error code = 0x"
<< hex << hr << endl;
pLoc->Release();
CoUninitialize();
return hr; // Program has failed.
}
cout << "Connected to WMI" << endl;
return 0;
}
--------------------------------------------------code----------------------------------------------
|
|
|
|
|
I compile this code without change default prj setting and any err don't occur .
|
|
|
|
|
baicker wrote: Windows2003 CN + SP1
I think the last PSDK that was compatible with VC6 was the Windows Server 2003 PSDK released in Feb 2003.
|
|
|
|
|
|
I had resolved it
thank you all
|
|
|
|
|
Is there any way to discard Named Pipes still open on a Pipe Client App, after the Server dies for some reason, but Multiple Clients still hold Open File handles to their end of the Named Pipe. On my version of XP and VCPP 5.00, the server refuses to create a new Named pipe instance, as long as any of the Client Processes have even only one pipe instance by the name open! This means a Physical run around the equipment in the building to close it down! I do not expect to pick up the open client pipes, but would like at least the Server to be able to restart, and hopefully the opportunity to configure the client software in such way that it recognises that the server has stopped and re-started, and that consequently a re-start of the Client software is appropriate.
regards
LateNightsInNewry
|
|
|
|
|
Not sure, but try right clicking on MyComputer, select "Manage" and then "Shared Folders" and check to see if pipes show up in there. If so, you should be able to right click on each (or the entire group) and perform a "disconnect".
I've only done this with locked files on shares but it's worth a shot.
|
|
|
|
|
Yes, Know that one, but does not work here, you get a message of no access to remote file! anyways, I meant something under program controll, i.e without user intervention.
Thanks anyways
LateNightsInNewry
|
|
|
|
|
I'm building in Microsoft Visual Studio 2003, using C++ (so, it's v 7.1).
Here is my scenario, consider each situation be repeated ad infinitum:
Child thread performs "new A", parent thread performs "delete A" - no problem.
Parent thread performs "new B", child thread performs "delete B" - virtual memory grows uncontrollably over time, consuming my computer in an almost fiery death. The working set grows and gets trimmed over time as would be expected.
Some additional clarification - I can actually watch the VM size increase and decrease in the first situation (using both Task Manager and PerfMon). It appears to monotonically increase in the second situation. I'm just baffled why virtual memory is contained going the first direction, but not the second.
Any ideas?
|
|
|
|
|
Maybe it is spawning lots of threads? That would consume system resources as it is on the O/S level that manages this.
VM are not usually the problem in MT programs - usually it is odd crashes, when some var is not properly locked or we've screwed up some syncronization.
A cynic is a man who, when he smells flowers, looks around for a coffin. -H.L. Mencken
|
|
|
|
|
Your Problem is somewhat incomprehensible. Give us some actual (tested) code.
Virtual memory is not something you have control over or should be concerned about! Your program only allocates memory! The operating system decides which part of all memory used should be virtual, your program has no control over that. If your monitor gives a sudden and sharp increase in virtual memory usage untill death, that means invariably that you ended up in an endless loop allocating memory. This has nothng to do with virtual memory anagement! Investigate all for, do,while loops in which memory is (indirectly) (m)allocate(d) Thats where the problem is!
Hint:
Debugging can be troublesome for beginners like me, but here'se a start
Put in the Header File: (Best in stdafx.h, at the bottom)
#define malloc(x) MyMalloc((x),__LINE__,__FILE__)
and write a function:-
void* MyMalloc(size_t Size,int LineNr,LPCSTR FileName){
CString Msg;
Msg.Format("malloc(%i) in File:%s, Line %i\n",FileName,LineNr);
size_t StrLen=Msg.GetLength();
size_t BufSize=StrLen+1>Size ?StrLen+1:Size;
void* pRes=malloc(BufSize+255);
if(pRes==NULL)return NULL:
strcpy(pRes,(LPCSTR)Msg);
return pRes;
}
Avoid writing anything to the objects you Use
Compile and Run the Program, when it dies, it gives a trace log in the bottom of the screen, of all blocks not freed"
Take it from there
LateNightsInNewry
|
|
|
|
|
N.B Its obvious, but before the above function, write:
#undef malloc. Else you have an Endless Loop in itself(think)
Also, write a similar function for calloc,new, etc
success
LateNightsInNewry
|
|
|
|
|
Disregard the question. I found my problem. It was an actual memory leak, due to lack of a call to delete in one unique case that wasn't being handled. Rookie mistake, my bad.
|
|
|
|
|
Just a quick question. When the exe is built as Multithreaded, should the dll's also be multithreaded or does it not matter?
|
|
|
|
|
all modules should be in parallel
Kuphryn
|
|
|
|
|
Yes, they should be. For such things as the C-Runtime library (the library that contains the implementation for things such as fopen and errno), there are slight differences in how some things are done. For example, in a single threaded CRTL DLL, memory management probably isn't locked so two threads don't try to allocate memory at the same time (due to the threads sharing the same core memory allocation tables). Even simple things such as errno and strtok are implemented differently in a single threaded CRTL.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
It depends. If you’re not sure just make all of them multithreaded.
If the main .EXE is multithreaded but only makes calls to a DLL using one of these threads and the DLL is single threaded itself then it need not be compiled with the multithreaded libraries.
Steve
|
|
|
|
|
Tell me if what I say below makes sense and is possible.
There is a program (matlab) that makes plots. Currently (as far as I can work it) it can either just display the plot or save it to the hardive. Well I want to display the plot on my separate application. Here are two ways I have done it - also, please note, the graph is real time data so it is refreshed every millisecond or so. When I was generating the graphs as displays (ie not save image to HD) I would - in my external app - take a screenshot of the plot and display it on my app. This was fast enough, etc but I doesn't work if the app is minimized or covered up. So, then I went towards the save image to HD method, this worked great, except it was kinda slow, especially if you're running it on a laptop harddrive.
So, currently both my solutions have their limitations. Here is my question. Ignoring whether the fact matlab even has the functionality to do this, I would like to save the plot to memory! Does this make sense? I just want to save the bytes somewhere in the RAM! Then I would like to read it in my external app and construct an image out of it. So, I guess serialize the image to memory then deserialize it to an image. Is this feasible?
Can anybody else think of an efficient way of gettting this plot from matlab?
P.S. The plot is hosted in a SunAwtCanvas (thanks to spy++)
/\ |_ E X E GG
|
|
|
|
|
Actually, I just found a function in matlab that lets you save the plot to the clipboard! So, I guess that's the easy way out...
/\ |_ E X E GG
|
|
|
|
|
Fundamental? Not to C or CPP development. Your question sounds like greek to me, I'm not the moderator of this forum, but I would think that posting Matlab questions here is stretching it a bit! I always viewed MatLab as 'Basic on Steroids', maybe I am a bit harsh here, but I do not think that you're in the right forum here, and that you may get better advice in a Matlab forum!
best of luck
LateNightsInNewry
|
|
|
|
|
typedef UpdateHandler* UpdateHandlerPtr;
I saw this code in a project file but I couldn't find what the definition of UpdateHandler is. It is not defined anywhere. Only thing I found on UpdateHandler is the code below
What does the syntax below do?
typedef void UpdateHandler(ObjectRootPtr, const RTI::AttributeHandleValuePairSet&);
|
|
|
|
|
Jay03 wrote: typedef void UpdateHandler(ObjectRootPtr, const RTI::AttributeHandleValuePairSet&);
That is the definition of UpdateHandler. This syntax is creating a function pointer. For more information, look up callback functions and function pointers.
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
Isn't it a declaration? It's interesting - I wonder how the compiler parsed out the fact that it is not typedef'ing void?
A cynic is a man who, when he smells flowers, looks around for a coffin. -H.L. Mencken
|
|
|
|
|
The problem is that function pointer syntax is bizarre (sorry guys it is). In this example you are typdefing a function pointer that returns void and two parameters (ObjectRootPtr, const RTI::AttributeHandleValuePairSet&) to the name UpdateHandler. It does look wierd, but it works.
On those occasions I need function pointers, I always have to look at an example because I can never quite remember it.
|
|
|
|
|
And it's going to show up on one of the awful employment tests that they give us.
A cynic is a man who, when he smells flowers, looks around for a coffin. -H.L. Mencken
|
|
|
|
|