|
you mean that i have loaded .dll file correctly and the error is because of somewhat like syntax error?
but i have exactly copied the name of function in dll.
i dont know why this error occurs
|
|
|
|
|
I have no idea why the error occurred, beyond saying that is is caused by a bad address reference somewhere. And the only way to find out where it occurred is by using the debugger. Are you certain that the parameter 0x01 that you send to the ConnectByAddress function is valid? Check the documentation to see what that function is supposed to do, and what it is supposed to return.
|
|
|
|
|
To use functions from a DLL you have two choices: Early and late binding.
Early binding:
Link your application with the DLL by using the #import directive in one file (usually a source file using functions from the DLL) specifying the file name (usually without extension or with .lib), or add the .lib file to your project settings (Linker - Input).
Include the header file and call the functions defined in that file.
Late binding:
This is only necessary if the DLL might not be present when your application is executed or you do not have a .lib file. Then use LoadLibrary and GetProcAddress like in your above example. But check both return values to be not NULL . Have a look at the header file (if present), to know how to define the function prototypes. Example:
typedef int (__stdcall *ConnectByAddressfuncPtr)(short Addr);
ConnectByAddressfuncPtr LibMainConnectByAddress = NULL;
HMODULE hLib = LoadLibrary(_T("mcl_gen.dll"));
if (hLib)
LibMainConnectByAddress = (ConnectByAddressfuncPtr)GetProcAddress(hLib,"ConnectByAddress");
if (LibMainConnectByAddress)
LibMainConnectByAddress(0x01); Note that I have initialised the function pointer with NULL and checked it before calling the function. Note also the __stdcall in the prototype declaration. It defines the calling convention used by the DLL. You have to check which is used (by inspecting the header file or asking the provider). __stdcall is common but it might be also __cdecl .
|
|
|
|
|
Hi. thank you for your answer. i dont have any .lib file
i tried your code but "LibMainConnectByAddress" still remains NULL. so the code skips
LibMainConnectByAddress(0x01);
do you know why?
thank you again
|
|
|
|
|
All I can suggest is to check if the DLL exports the function "ConnectByAddress" (e.g. using the Dependency Walker (depends.exe) Home Page[^] or executing dumpbin /exports path_to_dll on the command line; dumpbin is in the VC/bin folder) and trying it with different calling conventions like __cdecl .
I would use the Dependency Walker because it shows also the calling convention for the exported functions.
|
|
|
|
|
Member 13471493 wrote: "LibMainConnectByAddress" still remains NULL. You omitted to mention that in your reply to me. If that function pointer is null then it will cause the error you have seen. You need to check the function name that you are trying to get the address for, does it actually exist in the dll?
|
|
|
|
|
Yes it Does. i tried others functions that exist in dll too. but i got the same error. i am sure about syntax and existence of these functions in the dll.
|
|
|
|
|
But are you sure that the value you are sending to the function is correct?
|
|
|
|
|
Have you used the Dependency Walker or dumpbin meanwhile?
The exported names may be mangled (see Name mangling - Wikipedia[^] ). Then you have to pass the mangled name to GetProcAddress .
|
|
|
|
|
This article explains it. Basically you use LoadLibrary with the DLL's path given to it. The rest is mapping the functions you will need to call.
- Michael Haephrati מיכאל האפרתי
|
|
|
|
|
Hi,
i have created a sample ATL application in VS2010, added ATL Simple object.
it has only one method
int getVal()
{
return 10;
}
i have enabled /clr switch in the project properties and build in release mode. (i have added /clr because i want to consume some objects build in C#.net)
after registering the dll, i have consumed the COM object in vbscript. (the code below)
dim obj
set obj = createobject("MySample.COMSample")
msgbox obj.getVal()
set obj = nothing
this is very simple COM object. if i run the above script, it will show message box "10".
once i press ok, there is an popup with an exception message below.
---------------------------
WScript.exe - Application Error
---------------------------
The exception unknown software exception (0xc0020001) occurred in the application at location 0x7c812aeb.
Click on OK to terminate the program
---------------------------
OK
---------------------------
if i remove /clr switch and build it run the Vbscirpt. i don't see the popup error.
any suggestion why there an exception when /clr switch is used ?
Thanks in advance.
modified 23-Aug-17 6:26am.
|
|
|
|
|
I m using VC++ VS2008 compact edition. I hv problem that
when I m using
GetUsbDriveLetter(CString)
at compiled time error occurred not defined because it is in Quote: winbase.h sdk function. And CE7 hv different sdk therefore it occurred. please suggest me how to get USB letter in CE7
YogeshJadhav
|
|
|
|
|
I cannot find that function in the latest version of winbase.h, and MSDN does not seem to have heard of it. What version of the SDK do you have that includes it?
|
|
|
|
|
actual error is
Error 294 error C3861: 'GetLogicalDriveStrings': identifier not found
and using Toradex_CE700 platform using VC++
Microsoft Visual Studio 2008
Version 9.0.30729.1 SP
Microsoft .NET Framework
Version 3.5 SP1
Installed Edition: Professional
Microsoft Visual C++ 2008 91605-130-0752752-60490
Microsoft Visual C++ 2008
Crystal Reports AAJ60-G0MSA4K-68000CF
Crystal Reports Basic for Visual Studio 2008
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB2483802) KB2483802
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB944899) KB944899
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB945282) KB945282
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB946040) KB946040
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB946308) KB946308
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB946344) KB946344
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB946581) KB946581
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB947171) KB947171
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB947173) KB947173
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB947180) KB947180
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB947540) KB947540
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB947789) KB947789
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB948127) KB948127
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Hotfix for Microsoft Visual Studio 2008 Professional Edition - ENU (KB953256) KB953256
This hotfix is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this hotfix will be uninstalled automatically.
For more information, visit http:
Microsoft Visual Studio 2008 Professional Edition - ENU Service Pack 1 (KB945140) KB945140
This service pack is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this service pack will be uninstalled automatically.
For more information, visit http:
Microsoft Visual Studio 2008 Professional Edition - ENU Service Pack 1 (KB947888) KB947888
This service pack is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this service pack will be uninstalled automatically.
For more information, visit http:
Update for Microsoft Visual Studio 2008 Professional Edition - ENU (KB956453) KB956453
This update is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this update will be uninstalled automatically.
For more information, visit http:
Update for Microsoft Visual Studio 2008 Professional Edition - ENU (KB967143) KB967143
This update is for Microsoft Visual Studio 2008 Professional Edition - ENU.
If you later install a more recent service pack, this update will be uninstalled automatically.
For more information, visit http:
|
|
|
|
|
|
yes, then any function to get usb drive letter in Windows CE 700 api
|
|
|
|
|
See my other reply below; it seems that Windows CE does not use drive letters.
|
|
|
|
|
|
Hello, I am newbie to C++ and therefore I found the following example and working with it.
A Beginner Tutorial for Writing Simple COM/ATL DLL For VS2012
I like to know how to use this example COM object in VB Script, I like to do it using CreateObject Method.
If it currently doesn't support VB Script, how can I add VB Script support to this DLL?
Thanks for your help.
|
|
|
|
|
|
Thanks, I did it but I got "Could not locate automation class..." in VB Script, but using C# this works fine.
I used it like
Dim Test: Set Test = WScript.CreateObject("SimpleATLComLib.SimpleCom")
Test.TotalMarks = 50
because I don't know how to get automation class name to be used in VB Script from that DLL.
Why this error occurs?
|
|
|
|
|
Sorry, no idea, I have not used VBScript in this way.
|
|
|
|
|
I need to debug an embedded C-application that contains a lot of the following structs:
MyStruct.MySubStruct.MyEnum
I have ported the code into a Visual Studio 2005 console application and I would like to dump all the struct-members (several hundred in total) to a text-file like this:
MyStruct.MySubStruct.MyEnum = MyEnumValue
I know this isn't possible in pure Visual Studio c programming language, but aren't you allowed to include C++ files as well in a Visual Studio console project? If so, is C++ capable of converting struct members and enums into text strings?
|
|
|
|
|
arnold_w wrote: pure Visual Studio c programming language There is no such thing.
And your code above does not make clear what the problem is in sending the struct contents to a text file. Generally speaking you need to write the code to dump each element of the struct. Or you could just run the program in the Visual Studio debugger and examine the fields that way.
|
|
|
|
|
Just like
__FILE__ generates a string with file name and
__LINE__ generates a string with the line number, I would like to have some way of generating strings with the structs' and members' names.
|
|
|
|