|
|
It seems like I forgot to export the function in the other dll (in the def file), but it's working now ....
Thanx anyway
Regards,
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
Do you mean , this function is in dll and you are using it ?
You need to link its .lib in to client lib,. Have you dont this ?
|
|
|
|
|
Yes, I have already link the lib file. It's actually one dll calling another, but in the one dll I forgot to export one of the functions. When I changed the dll so that it exports the function everything seems to be working. But thanx alot for your input prasad.
Regards,
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
|
Possibley you are deleting corrupted memory. Actually, call stack should show you where it is occuring.
|
|
|
|
|
The exception occurs right before my dll terminates ... the debugger refered to assert , would this make a difference?
Debug Assertion Failed!
File: dbgheap.c
Line: 1252
Expression: _CrtIsValidHeapPointer(pUserData)
For more information see the VS C++ Documentation on assert
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
Again same, its is dues to corrupting memory. One typical example would be,
char *p = new char[10];
strcpy(p,"string greater than 10");
delete []p;
or
char *p = new char[10];
delete []p;
delete []p somewhere from program.
|
|
|
|
|
Ok, nowhere in my program am I using the delete nor ZeroMemory functions. I'll do some serious debugging, but thanx Prasad.
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
Programm3r wrote: program am I using the delete nor ZeroMemory functions.
Doesn't matter. It could be possible , that memory created on stack(array) is corrupted this way.
|
|
|
|
|
Thanx anyway Prasad ... this bug is starting to p^ss me off ... but oh well .. I'll figure it out ..
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
Hi all,
How could I clear / erase the contents of s :
class CIniFile
{
public:
struct Record
{
string Comments;
char Commented;
string Section;
string Key;
string Value;
};
vector<CIniFile::Record> s = CIniFile::GetSection("Client Files",IniFileName);
I tried the following:
s.erase(s.begin(),s.end());
Bit receive the following:
Windows has triggered a breakpoint in CompClientApp.exe.
This may be due to a corruption of the heap, and indicates a bug in CompClientApp.exe or any of the DLLs it has loaded.
The output window may have more diagnostic information
Many thanx
Regards,
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
Its object, not pointer, isn't it ?
|
|
|
|
|
|
Programm3r wrote: lpzFiles[i].szFileName = "";
How is lpzFiles is declared like ?
|
|
|
|
|
#define FILE_NAMES 10
struct
{
char* szFileName;
}lpzFiles[FILE_NAMES];
It's as if the stack of that specific portion of code gets corrupted (that is the function call)
-- modified at 9:52 Monday 5th March, 2007
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r My Blog: ^_^
|
|
|
|
|
Dear all
I write one small DLL that I need to load it only one time.
How can I protect my dll from loading twice or more at load time.
I use LoadLibrary function to load my dll in dynamic manner.
How can I load this DLL in static manner.
Thanks in advance
Mahdi
|
|
|
|
|
m_monhi wrote: How can I load this DLL in static manner.
You mean implicit linking [^] ?
-- modified at 4:01 Monday 5th March, 2007
Refer[^].
|
|
|
|
|
|
If you have a DLL (Dynamic linking Library) then you must link it dynamically. The options available are implicit or explicit dynamic linking.
To make sure the library is loaded only one time you can either use the implicit (load time) linking (reference the proper *.lib as LINKER input library) or, using explicit linking, store the returned handle and check its values before trying to load (again) the library.
hope that helps
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
Hi, I'm having a link error problem and I don't know how to fix it.
Please help me out.
error LNK2019: unresolved external symbol _Validate@1068 referenced in
function...........
I use VS2005
I have a static library with the following C++ settings:
/Od /D "WIN32" /D "_DEBUG" /D "_LIB" /D "_UNICODE" /D "UNICODE" /Gm /
EHsc /RTC1 /MDd /Yu"stdafx.h" /Fp"Debug\Licensor.pch" /Fo"Debug\\" /
Fd"Debug\vc80.pdb" /W3 /nologo /c /Wp64 /ZI /TP /errorReport:prompt
It uses __cdecl (/Gd) calling convention.
In the header file, I have
#if __cplusplus
extern "C" {
#endif
__declspec(dllexport) int WINAPI Validate(CHAR szNewKey[], int length, LICENSEDATA licData, LICENSEDATA* extLicData);
#if __cplusplus
}
#endif
I have a win32 project that links to the static library above in order to
call the Validate function. It has the following C++ settings:
/Od /I "..\..\Licensor" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D
"VERBOSE" /D "_VC80_UPGRADE=0x0600" /D "_MBCS" /FD /EHsc /MTd /Fp".
\Debug/Temp.pch" /Fo".\Debug/" /Fd".\Debug/" /W4 /nologo /c /ZI /TP /
errorReport:prompt
It too uses __cdecl (/Gd) calling convention.
I'm not sure what to change. Should I be using __stdcall (/Gz) calling
convention for the project? I tried that but no luck either.
Any suggestion? Thanks much.
|
|
|
|
|
jipai wrote: In the header file, I have
#if __cplusplus
extern "C" {
#endif
__declspec(dllexport) int WINAPI Validate(CHAR szNewKey[], int length, LICENSEDATA licData, LICENSEDATA* extLicData);
#if __cplusplus
}
Where this function is defined ?
|
|
|
|
|
It's defined in a .cpp file of the static library, something like
extern "C" __declspec(dllexport) int WINAPI Validate(char szKey[], int length, LICENSEDATA licData, LICENSEDATA* extLicData)
{
.
.
// code here
.
.
}
Do I need extern "C" here in the cpp file?
|
|
|
|
|
jipai wrote: I have a win32 project that links to the static library above in order to
call the Validate function.
Did you explicitely change your project settings in order to link to this library ? If no, that's your problem.
Open your project properties, go into "Linker" category -> "Input" and add your library to the "Additional Dependencies" list.
Your library must be in one of the library directory (to add it, open the "Linker" category -> "General" and add the folder in "Additional Library Directory").
|
|
|
|
|
Yes, I did add the static library Licensor.lib to the win32 project Linker -> Input -> Additional Dependencies setting, and the folder to the library path. It didn't complain about library not found. This is the command line:
/OUT:".\Debug\MyApp.exe" /INCREMENTAL /NOLOGO /LIBPATH:"..\chapp\Debug" /MANIFEST /MANIFESTFILE:".\Debug\MyApp.exe.intermediate.manifest" /DEBUG /PDB:"c:\Developer\Projects\MyApp.pdb" /SUBSYSTEM:WINDOWS /MACHINE:X86 /ERRORREPORT:PROMPT odbc32.lib odbccp32.lib Winmm.lib Licensor.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
|
|
|
|