Can't see DLL symbols in debugger.
- From: Rick <Rick@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 25 Mar 2009 15:10:01 -0700
Hi. I have made a small test program consisting of one application
and two DLL's. Each of the three components uses the services of the
other two.
The program works great, but I can't see see dynlib1's symbols when
I'm in applic, for instance. Then when I'm in dynlib1, I can't see
applic's symbols. The program works, so the symbols are there, but I
get a message in the watch window like CXX017: Error: symbol
"dynlib1_datum" not found.
Surely this isn't how it's supposed to work. Now that I've boiled it
down to a few lines, can someone show me the magic key? Or perhaps Visual
Studio has a bug?
Regards, Rick
applic.h: ********************
#ifndef APPLIC_H
#define APPLIC_H
APPIMPEXP extern int applic_datum;
APPIMPEXP int applic_func(int);
#endif
applic.cpp: ********************
#include <iostream>
#include <string>
#include "applic.h"
#include "dynlib1.h"
#include "dynlib2.h"
using namespace std;
int applic_datum = 20;
int applic_func(int passed_int) {
cout << "In applic_func." << endl;
cout << "applic_datum * passed_int = " << applic_datum * passed_int
<< endl;
cout << "dynlib1_datum * passed_int = " << dynlib1_datum * passed_int
<< endl;
cout << "dynlib2_datum * passed_int = " << dynlib2_datum * passed_int
<< endl;
return applic_datum * passed_int;
}
int main(int argc, char** argv) {
cout << "applic_datum = " << applic_datum << endl;
cout << "applic_func(10) returns: " << applic_func(10) << endl;
cout << endl;
cout << "dynlib1_datum = " << dynlib1_datum << endl;
cout << "dynlib1_func(11) returns: " << dynlib1_func(11) << endl;
cout << endl;
cout << "dynlib2_datum = " << dynlib2_datum << endl;
cout << "dynlib2_func(12) returns: " << dynlib2_func(12) << endl;
cout << endl;
cout << "Waiting for a carriage return.";
string line;
getline(cin, line);
}
applic.mak: ********************
all: applic.exe
clean:
del *.obj *.exe *.lib *.exp
applic.exe: applic.obj
lib /def /out:applic.lib applic.obj
link /debug /out:applic.exe applic.obj ..\dynlib1\dynlib1.lib ..
\dynlib2\dynlib2.lib
applic.obj: applic.cpp applic.h
cl /Zi /Fdapplic.pdb /c /EHsc /I..\dynlib1 /I..\dynlib2 /
DAPPIMPEXP=__declspec(dllexport) /DDL1IMPEXP=__declspec(dllimport) /
DDL2IMPEXP=__declspec(dllimport) applic.cpp
dynlib1.h: ********************
#ifndef DYNLIB1_H
#define DYNLIB1_H
DL1IMPEXP extern int dynlib1_datum;
DL1IMPEXP int dynlib1_func(int);
#endif
dynlib1.cpp: ********************
#include <iostream>
#include "applic.h"
#include "dynlib1.h"
#include "dynlib2.h"
using namespace std;
int dynlib1_datum = 21;
int dynlib1_func(int passed_int) {
cout << "In dynlib1_func." << endl;
cout << "applic_datum * passed_int = " << applic_datum * passed_int
<< endl;
cout << "dynlib1_datum * passed_int = " << dynlib1_datum * passed_int
<< endl;
cout << "dynlib2_datum * passed_int = " << dynlib2_datum * passed_int
<< endl;
return dynlib1_datum * passed_int;
}
dynlib1.mak: ********************
all: dynlib1.dll
clean:
del *.obj *.dll *.lib *.exp
dynlib1.dll: dynlib1.obj
lib /def /out:dynlib1.lib dynlib1.obj
link /debug /dll /out:dynlib1.dll dynlib1.obj ..\applic\applic.lib ..
\dynlib2\dynlib2.lib
dynlib1.obj: dynlib1.cpp dynlib1.h
cl /Zi /Fddynlib1.pdb /c /EHsc /I..\applic /I..\dynlib2 /
DAPPIMPEXP=__declspec(dllimport) /DDL1IMPEXP=__declspec(dllexport) /
DDL2IMPEXP=__declspec(dllimport) dynlib1.cpp
Dynlib2 is similar to dynlib1.
.
- Prev by Date: VS Web Dev 2008 Express & hyperlink - Error
- Next by Date: avoid "leave" instruction being added
- Previous by thread: VS Web Dev 2008 Express & hyperlink - Error
- Next by thread: avoid "leave" instruction being added
- Index(es):
Relevant Pages
|
Loading