WEBUTIL_C_API: Writing wrapper DLL's to address calling convention issues

I am interested in calling the Windows API using WEBUTIL_C_API. In particularly, I am interested in calling FindWindow to obtain window handles. I registered the function as required, but have yet to get a meaningful result. Upon researching Metalink a bit, I encountered a post stating that FindWindow uses Pascal calling conventions, while WEBUTIL_C_API expects C calling conventions. The suggested solution is to wrap the API call in my own DLL, which adapts between the two calling conventions.
I'm fairly adept at writing standard C code, albeit out of practice, and with a bit of Googling, I have even managed to compile a DLL using GNU gcc. Alas, I evidently don't understand all the compiler directives required to write the wrapper DLL that I have described. Has anyone else managed a similar task, who might share an example or direct me to some helpful documentation?
Thanks,
Eric Adamson
Lansing, Michigan

Mr. Ronald,
Thank you for your assistance. After going through the webutil log file and the WebUtil Familiarization Manual a few more times, and lastly, metalink, it was stated in a metalink post that the "Cause for the Error WUC-20 can be that the webutil.cfg file has an invalid virtual directory: install.syslib.location".
According the WebUtil Familiarization Manual (p.11 of 49), install.syslib.location=/webutil. I did just that, and the log file indicated that
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.746 WUI[setProperty()] Setting property WUC_GET_LOCAL_PROPERTY to syslib.ffisamp.dll
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[getProperty()] Getting property WUC_GET_LOCAL_PROPERTY
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[loadSettings()] No local properties file to load
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.761 WUI[getProperty()] Value of WUC_GET_LOCAL_PROPERTY=null
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[setProperty()] Setting property WUC_URL_DOWNLOAD to 1|40960|Y|/webutil/ffisamp.dll|ffisamp.dll|WebUtil Install|Downloading required libraries; Please wait...|ffisamp.dll
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[getProperty()] Getting property WUC_URL_DOWNLOAD
xxx.xxx.xxx.xxx:xxxxxxx: 2004-Jan-22 11:32:53.777 WUI[downloadFromURL()] Source is http://<machine_name:port>/forms90/f90servlet/webutil/ffisamp.dll
So I tried the absolute URL, http://<machine_name:port>/forms90/webutil, Voila! It worked. The point is somehow, the download url should not include .../f90servlet/...; just plain /forms90/webutil.
Thank you for your time and assistance.
Regards,
thomas

Similar Messages

  • How to build a DLL that has Pascal calling conventions with application builder?

    Hi,
    I'm researching for possible solution to one of our problems.
    In one case, solution would be to build a DLL from LabView
    code. This should be simple task, but the application that
    is going to load the DLL requires that the functions in the
    library are exported using Pascal calling conventions,
    similar to the C/C++ example code below.
    DWORD APPEXPORT far APPPASCAL function(char hexr[])
    Could this be possible with LabView somehow? Or is it best just
    to write the DLL with C/C++?
    Thanks.

    Thanks Wiebe.
    I don't know whether I need pass string pointers or not. The example
    I posted was from the manual of the program that will be using the DLL
    I build with LabView. I only wanted to show with it the exported calling
    convention needed. It seems that it actually confused my question rather
    than clearing it.
    Anyway, now I know that it's possible to declare the calling convention
    when building the DLL. And it's always good to know that I might encounter
    different pointer types on the way, this may actually save me from a lot of
    debugging some day.

  • Error Occuring While Processing Data With DIAdem 8.1Excepti​on EAccessVio​lation in module ntdll.dll at 000111DE. Access violation at address 7C9111DE in module 'ntdll.dll​". Read address 37363430

    Hello,
    We are having an issue running Diadem 8.1 on a new HP XW 9400 with Windows XP SP2. 3 errors have been occuring with frequent crashes, they are:
    1) "1Exception EAccessViolation in module ntdll.dll at 000111DE. Access violation at address 7C9111DE in module 'ntdll.dll". Read address 37363430.
    2) The instruction at "0x7c9111de" referenced memory at "0x352e302d". The memory could not be "read".
     3) ---Error---   DIAdem
    Error in Autosequence - processing in line: 74 (IARV_VAR_GET)
    Runtime Error while executing command "Iarv2Txt$ := FR(T9,L1)"
    Error type: ACCESS VIOLATION
    Error address: 000101DE
    Module name:ntdll.dll
    We are using the same scripts and version 8.1 on a variety of Dell desktop computers (W2K and XP SP2) without any issue, looking for suggestions as this affects no other software on the HP XW 9400 other than DIAdem. Appreciate any suggestions.
    Message Edited by swillh on 06-25-2007 08:55 AM

    Christian,
    I will answer your questions in the text below. Thanks for your help.
    Hi swillh,
    I also would like to help you.
    Unfortunately, The reported access violation in the central Windows ntdll.dll is very unspecific.
    May be the following questions will help you to provide me more info.
    1. You mentioned that the aut's and - I think - also the accessed text file reside on a server.
    Is there a stable network connection?
    The server can sometimes be a little slow but the connection is good. This computer is using the same connection that the prior computer utilized without issue.
    Are the files accessed by multiple clients simultaneously?
    It is possible that more than one computer can be accessing the same file, but again, this has never been an issue. We are reading the files only, not writing to them.
    The processing routines we are running have used for over 5 years without any issues until adding this computer.
    Is the text file read by one client while another client is writing the same file?
    No, files are "read only"
    2. Have you already tested opening the file with the FileOpen command before calling FR?
    Yes
    Do you see any chance to convert the aut to a vbs file? This gives you more alternatives in accessing text files.
    3. What do you mean with "processing ATD's with 30 or more channels of data"? Where is the relation between ATD files and data channels?
    Processing Crash Dummy data with file sets low in channel count (15 channels) result in successful processing without any crashes or access errors.  When processing dummies with more than 20 channels we sometimes encounter these issues. The higher channel count may be the only common factor I can find in these faults.
    Steve
    Message Edited by swillh on 07-09-2007 08:44 AM

  • How to link a wrapper DLL to the target DLL

    I appreciate your help!
    Question:
    In my project, I need to deal with a hybrid programming of C++ and Labview. The C++ part has been encoded into a DLL, which aims to do a complex mathematics. The main function in the DLL has the following form:
                              float RateEqCalculate(class CLaserPulse *Pulse, class CMaterial *Material, class CThresh *ThreshPara, class CRateResults &r);
    The four arguments are all of the class type. The first three arguments are used to input parameters to the function and the last one is used to record the process of computation. For example: class CLaserPulse is composed by several numerics and two functions as the following form:
    class CLaserPulse
    public:
     float fDuration;  
     float fWave;  
     float fNA;   
     float fRefrIndex;                                     // Refractive Index
     float fAbsCoeff;                                     // Absorption coefficient [1/m]
     CLaserPulse();
     virtual ~CLaserPulse();
     virtual double Shape(double dTime);       // gives Temporal Shape
     float SpotDiameter();                            // Calculate Spotdiameter
    As in labview "class" cannot be accepted as an argument of the "Library Function Node" directly, a wrapper DLL is required to translate the "class" to the type labview can understand. The following link is a good illustration of this process. http://labviewwiki.org/DLL/shared_library Given the argument class CLaserPulse has been converted into the wrapper DLL by the method from the link, how can I later link this wrapper DLL to the target DLL. My understanding is like this:
                                                                                                 Target DLL
                                                                                    float RateEqCalculate(
      class CLaserPulse  ->   wrapper DLL       .........linking.........        class CLaserPulse,
      class CMaterial      ->   wrapper DLL       .........linking.........        class CMaterial,
      class CThresh        ->   wrapper DLL       .........linking.........        class CThresh ,
      class CRateResults  ->   wrapper DLL     .........linking.........        class CRateResults );
    Am I right? Four wrapper DLL to four class type arguments?
    Many thanks!!!

    Hello Rolf and Christian: 
    Thank you for your suggestions! I'm now working on it. I appreciate your continuous help!! 
    I'll briefly summarize my question here:
    In the original DLL, which is compiled by VC++ 6.0 and named RateEquation.dll, three class types (CLaserPulse, CMaterial& CThresh) are inclueded to do parameter exchanges; one class type is designed to save the calculation results(CRateResults);one main function to do the calculation and save the results as following form:  
     float RateEqCalculate(class CLaserPulse*, class CMaterial*, class CThresh*, class CRateResults &r); 
    My question now is the initialization of the struct type and the communication between this type with labview. 
    I'll take class CMaterial as an example to show how I made it into wrapper DLL.Original class CMaterial is defined as following:
    class CMaterial
    public:
     float AbsorberGap;
     float BandGap;
     float CollTime;
     float ElDensity; float RefractiveIndex; 
     float AbsorptionCoeff;  
     float MoleculeMass;  
     float Density;  
     float HeatCapacity;  
     float HeatConductivity;  float TAmbient;  
     CMaterial();
     virtual ~CMaterial();
      In a wrapper dll it's like this: 
    WrapperDll.h
     extern "C" { /*using a C compiler*/            //Using a C compiler to write the wrapper DLL
    #endif 
    struct RATEEQUATION_API CMaterial{                  
      //Electronical properties
      float AbsorberGap;
      float BandGap;
      float CollTime;
      float ElDensity;
      //Optical properties
      float RefractiveIndex;
      float AbsorptionCoeff;
      //Other properties
      float MoleculeMass;
      float Density;
      float HeatCapacity;
      float HeatConductivity;
      float TAmbient;
      typedef struct CMaterial CMaterial;                                             /* make the class opaque to the wrapper*/
     RATEEQUATION_API CMaterial* creat_CMaterial(void);           
    RATEEQUATION_API void destroy_CMaterial(CMaterial* LV_ref);
    #ifdef __cplusplus
    #endif  
    WrapperDll.cpp
    RATEEQUATION_API CMaterial* creat_CMaterial(void)
           return new CMaterial();                              
    RATEEQUATION_API void destroy_CMaterial(CMaterial* LV_ref)
           delete LV_ref;
     In function creat_CMaterial(), one can see the constructor of class CMaterial is called. As struct type CMaterial has the same memory layout as class type CMaterial, so it’s safe and possible to return a class CMaterial* to struct CMaterial* and it’s initialized by the default values in the class constructor. Now I’m confused by how one communicates between labview and struct CMaterial. For example, if I would like to change the parameter _CMaterial-> BandGap=6.5eV to 8eV. How to make it? My feeling is I need a cluster type from Labview as an input in the function creat_CMaterial:
                              CMaterial* creat_CMaterial(cluster_LV*)
    Many thanks!
    Message Edited by Kuo on 09-15-2009 09:56 AM
    Message Edited by Kuo on 09-15-2009 09:59 AM

  • LabVIEW exception on 'shutdown' - unloading/cleanup of wrapper DLL

    Ok, I want to check that my thinking on this is correct:
    We've created a wrapper DLL in VC++ that exposes some functions from a third party API/DLL. This works fine - there's an initialise, get data and close VI that use the CLFN . There is one small problem with the wrapper though - if the 'close' VI isn't called (which calls the API's close function) such as if we have to abort the application during development/debugging then LabVIEW crashes with an exception.
    I suspect that it's because the 'close' function from the API never gets called so it never cleans up when execution stops. Is that right?
    Is the solution to modify the wrapper DLL DllMain() to have the following and handle the DLL_PROCESS_DETACH by calling the API's close function? Is there anything more that I need to be aware of?
    BOOL WINAPI DllMain(
    HINSTANCEhinstDLL, // handle to DLL module
    DWORD fdwReason, // reason for calling function
    LPVOID lpReserved ) // reserved
    // Perform actions based on the reason for calling.
    switch( fdwReason )
    case DLL_PROCESS_ATTACH:
    // Initialize once for each new process.
    // Return FALSE to fail DLL load.
    break;
    case DLL_THREAD_ATTACH:
    // Do thread-specific initialization.
    break;
    case DLL_THREAD_DETACH:
    // Do thread-specific cleanup.
    break;
    case DLL_PROCESS_DETACH:
    // Perform any necessary cleanup.
    break;
    return TRUE;
    The original DllMain looked like this:
    BOOL APIENTRY DllMain( HANDLE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved )
    return TRUE;
    (Taken from here: http://www.ni.com/white-paper/3056/en/)
    Certified LabVIEW Architect, Certified TestStand Developer
    NI Days (and A&DF): 2010, 2011, 2013, 2014
    NI Week: 2012, 2014
    Knowledgeable in all things Giant Tetris and WebSockets
    Solved!
    Go to Solution.

    Stupidly, because I was having problems with Visual Studio I couldn't try it at the time of posting but changing the DllMain function worked and we no longer get the LabVIEW exception on exit.
    Certified LabVIEW Architect, Certified TestStand Developer
    NI Days (and A&DF): 2010, 2011, 2013, 2014
    NI Week: 2012, 2014
    Knowledgeable in all things Giant Tetris and WebSockets

  • Guidance on Writing LabVIEW DLL

    Can anybody point me to a resource relating to writing a DLL in LabVIEW for use in Excel?
    I have written a simple LabVIEW vi which takes 2 'Doubles' A and B and multiplies them together and displays the result in Product (also a double).
    In the application builder I have selected DLL and included the vi.  In 'Define VI Prototype' I have passed A and B by value and the return value has been linked to 'Product' which is passed back by value (no choice as it is greyed out).  The resulting Function prototype is :-
    double Product(double A, double B)
    In excel I define its use as
    Declare PtrSafe Function Product Lib "C:\Database DLL\KensFirst.dll" (ByVal A As Double, ByVal B As Double) As Double
    And the short test subroutine shows that it works
    Sub test()
    A = 311
    B = 28
    Debug.Print Product(A, B)
    End Sub
    So Far So Good!!
     Now I want to do a similar thing with strings.
    Inputs are 'Given' and 'Family' (both strings) which I concatenate (with a space) to another string called 'Full'
    When I go to Defive VI Prototype I get a different set of behaviors
    First - the return value is defaulted to (none)
    Second - Ful and a parameter called len has appeared in the parametes box
    Third - Can now only pass by pointer be it String Handle, C String or Pascal String
    The (default) function prototype is
    void StringTest(char Given[], char Family[], char Full[], int32_t len)
    How can I use this in excel to declare my function and return 'Full'
    I have tried several variants of teh declare statment with results ranging from Bad DLL calling convention complie error to crashing Excel!!
    Ideally I would like to use it as follows
    Full = Product(Given,Family)
    Any help would be greatly appreciated
    Ken

    I haven't tried this, and don't have time to right now, but returning a string doesn't appear to be simple:
    "... some types are more easily returned by modifying arguments in place: strings, arrays, ..." (from https://msdn.microsoft.com/en-us/library/office/bb687915%28v=office.15%29.aspx) Since you're trying to return a new string, you can't operate on it in place, and this means you need some way of clarifying which code (Excel or LabVIEW) should allocate and release the memory for the new string, which gets complicated. Also, you can't easily return a string (even in a pure C environment returning a string from a function isn't a good idea).
    The easiest option is to pass in an additional parameter, a string long enough to hold the concatenated result. Anything else will be complicated.

  • Webutil_c_api with user32.dll (ShowWindow method) crashes

    Hello,
    I am trying to hide a window by using the method ShowWindow of user32.dll.
    So I use the package webutil_c_api.
    It works, my window becomes hidden, but just after that, the Forms applet crashes with Internet Explorer.
    Here is the code :
    declare
         v_args webutil_c_api.ParameterList;
         v_param webutil_c_api.ParameterHandle;
         v_res pls_integer;
    begin
      v_args := webutil_c_api.create_parameter_list;
      v_param := webutil_c_api.add_parameter(v_args, webutil_c_api.C_LONG, webutil_c_api.PARAM_IN, 66152);
      v_param := webutil_c_api.add_parameter(v_args, webutil_c_api.C_INT, webutil_c_api.PARAM_IN, 0);
      v_res := webutil_c_api.invoke_long('user32.dll', 'ShowWindow', v_args);
      MESSAGE('ShowWindow -> ' || v_res);
    EXCEPTION
         WHEN OTHERS THEN
           message('Error code: '||to_char(sqlcode)||'  Txt: '||sqlerrm);
           PAUSE;
           raise form_trigger_failure;
    end;Notice : I had to hardcode the Window Handler 66152 because I'm not able to find it (there is another problem).
    Do you have some hints?
    Thanks,
    Nicolas.

    When it crashes, it produces a file that is placed on my desktop :
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x2
    Function name=(N/A)
    Library=(N/A)
    NOTE: We are unable to locate the function name symbol for the error
          just occurred. Please refer to release documentation for possible
          reason and solutions.
    Current Java thread:
         at oracle.forms.webutil.cApi.CFunc.callInt(Native Method)
         at oracle.forms.webutil.cApi.CApiFunctions.invokeCApi(CApiFunctions.java:837)
         at oracle.forms.webutil.cApi.CApiFunctions.getProperty(CApiFunctions.java:144)
         at oracle.forms.handler.UICommon.onGet(Unknown Source)
         at oracle.forms.engine.Runform.onGetHandler(Unknown Source)
         at oracle.forms.engine.Runform.processMessage(Unknown Source)
         at oracle.forms.engine.Runform.processSet(Unknown Source)
         at oracle.forms.engine.Runform.onMessageReal(Unknown Source)
         at oracle.forms.engine.Runform.onMessage(Unknown Source)
         at oracle.forms.engine.Runform.processEventEnd(Unknown Source)
         at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
         at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Window.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    Dynamic libraries:
    0x00400000 - 0x00419000      C:\Program Files\Internet Explorer\IEXPLORE.EXE
    0x77F50000 - 0x77FF7000      C:\WINNT\System32\ntdll.dll
    0x77E60000 - 0x77F46000      C:\WINNT\system32\kernel32.dll
    0x77C10000 - 0x77C63000      C:\WINNT\system32\msvcrt.dll
    0x77D40000 - 0x77DCC000      C:\WINNT\system32\USER32.dll
    0x77C70000 - 0x77CB0000      C:\WINNT\system32\GDI32.dll
    0x77DD0000 - 0x77E5D000      C:\WINNT\system32\ADVAPI32.dll
    0x78000000 - 0x78086000      C:\WINNT\system32\RPCRT4.dll
    0x70A70000 - 0x70AD5000      C:\WINNT\system32\SHLWAPI.dll
    0x71700000 - 0x71849000      C:\WINNT\System32\SHDOCVW.dll
    0x71950000 - 0x71A34000      C:\WINNT\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.10.0_x-ww_f7fb5805\comctl32.dll
    0x773D0000 - 0x77BC2000      C:\WINNT\system32\SHELL32.dll
    0x77340000 - 0x773CB000      C:\WINNT\system32\comctl32.dll
    0x771B0000 - 0x772D1000      C:\WINNT\system32\ole32.dll
    0x74720000 - 0x74764000      C:\WINNT\System32\MSCTF.dll
    0x71500000 - 0x715FD000      C:\WINNT\System32\BROWSEUI.dll
    0x72430000 - 0x72442000      C:\WINNT\System32\browselc.dll
    0x75F40000 - 0x75F5F000      C:\WINNT\system32\appHelp.dll
    0x76FD0000 - 0x77048000      C:\WINNT\System32\CLBCATQ.DLL
    0x77120000 - 0x771AB000      C:\WINNT\system32\OLEAUT32.dll
    0x77050000 - 0x77115000      C:\WINNT\System32\COMRes.dll
    0x77C00000 - 0x77C07000      C:\WINNT\system32\VERSION.dll
    0x76670000 - 0x76757000      C:\WINNT\System32\SETUPAPI.dll
    0x5AD70000 - 0x5ADA4000      C:\WINNT\System32\UxTheme.dll
    0x63000000 - 0x63096000      C:\WINNT\system32\WININET.dll
    0x762C0000 - 0x76348000      C:\WINNT\system32\CRYPT32.dll
    0x762A0000 - 0x762B0000      C:\WINNT\system32\MSASN1.dll
    0x76F90000 - 0x76FA0000      C:\WINNT\System32\Secur32.dll
    0x10000000 - 0x1012D000      c:\program files\google\googletoolbar1.dll
    0x1A400000 - 0x1A47A000      C:\WINNT\system32\urlmon.dll
    0x71AD0000 - 0x71AD8000      C:\WINNT\System32\WSOCK32.dll
    0x71AB0000 - 0x71AC5000      C:\WINNT\System32\WS2_32.dll
    0x71AA0000 - 0x71AA8000      C:\WINNT\System32\WS2HELP.dll
    0x76C30000 - 0x76C5B000      C:\WINNT\System32\WINTRUST.dll
    0x76C90000 - 0x76CB2000      C:\WINNT\system32\IMAGEHLP.dll
    0x76B40000 - 0x76B6C000      C:\WINNT\System32\WINMM.dll
    0x76380000 - 0x76385000      C:\WINNT\System32\MSIMG32.dll
    0x6D510000 - 0x6D58D000      C:\WINNT\System32\DBGHELP.DLL
    0x71C20000 - 0x71C6E000      C:\WINNT\System32\netapi32.dll
    0x71B20000 - 0x71B31000      C:\WINNT\system32\MPR.dll
    0x75F60000 - 0x75F66000      C:\WINNT\System32\drprov.dll
    0x71C10000 - 0x71C1D000      C:\WINNT\System32\ntlanman.dll
    0x71CD0000 - 0x71CE6000      C:\WINNT\System32\NETUI0.dll
    0x71C90000 - 0x71CCC000      C:\WINNT\System32\NETUI1.dll
    0x71C80000 - 0x71C86000      C:\WINNT\System32\NETRAP.dll
    0x71BF0000 - 0x71C01000      C:\WINNT\System32\SAMLIB.dll
    0x76EE0000 - 0x76F17000      C:\WINNT\System32\RASAPI32.DLL
    0x76E90000 - 0x76EA1000      C:\WINNT\System32\rasman.dll
    0x76EB0000 - 0x76EDB000      C:\WINNT\System32\TAPI32.dll
    0x76E80000 - 0x76E8D000      C:\WINNT\System32\rtutils.dll
    0x75F70000 - 0x75F79000      C:\WINNT\System32\davclnt.dll
    0x722B0000 - 0x722B5000      C:\WINNT\System32\sensapi.dll
    0x75A70000 - 0x75B15000      C:\WINNT\system32\USERENV.dll
    0x76990000 - 0x769B4000      C:\WINNT\System32\ntshrui.dll
    0x76B20000 - 0x76B35000      C:\WINNT\System32\ATL.DLL
    0x76170000 - 0x761F8000      C:\WINNT\System32\shdoclc.dll
    0x74770000 - 0x747FF000      C:\WINNT\System32\mlang.dll
    0x63580000 - 0x63830000      C:\WINNT\System32\mshtml.dll
    0x75E90000 - 0x75F37000      C:\WINNT\System32\SXS.DLL
    0x6B700000 - 0x6B790000      C:\WINNT\System32\jscript.dll
    0x746F0000 - 0x74716000      C:\WINNT\System32\msimtf.dll
    0x746C0000 - 0x746E7000      C:\WINNT\System32\MSLS31.DLL
    0x76390000 - 0x763AC000      C:\WINNT\System32\IMM32.DLL
    0x76620000 - 0x7666E000      C:\WINNT\System32\cscui.dll
    0x76600000 - 0x7661B000      C:\WINNT\System32\CSCDLL.dll
    0x325C0000 - 0x325D2000      C:\Program Files\Office2003\OFFICE11\msohev.dll
    0x71A50000 - 0x71A8B000      C:\WINNT\system32\mswsock.dll
    0x71A90000 - 0x71A98000      C:\WINNT\System32\wshtcpip.dll
    0x76F20000 - 0x76F45000      C:\WINNT\System32\DNSAPI.dll
    0x76FB0000 - 0x76FB7000      C:\WINNT\System32\winrnr.dll
    0x76F60000 - 0x76F8C000      C:\WINNT\system32\WLDAP32.dll
    0x02C70000 - 0x02C83000      C:\Program Files\Labtec\Labtec Mouse Software\2.0\MOUDL32A.DLL
    0x76FC0000 - 0x76FC5000      C:\WINNT\System32\rasadhlp.dll
    0x6D350000 - 0x6D35D000      C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\npjinit13118.dll
    0x6D130000 - 0x6D15B000      C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\beans.ocx
    0x6D300000 - 0x6D316000      C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\jpishare.dll
    0x6D3F0000 - 0x6D4C7000      C:\PROGRA~1\Oracle\JINITI~1.18\bin\hotspot\jvm.dll
    0x6D220000 - 0x6D227000      C:\PROGRA~1\Oracle\JINITI~1.18\bin\hpi.dll
    0x6D380000 - 0x6D38D000      C:\PROGRA~1\Oracle\JINITI~1.18\bin\verify.dll
    0x6D250000 - 0x6D268000      C:\PROGRA~1\Oracle\JINITI~1.18\bin\java.dll
    0x6D390000 - 0x6D39D000      C:\PROGRA~1\Oracle\JINITI~1.18\bin\zip.dll
    0x6D020000 - 0x6D12B000      C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\awt.dll
    0x73000000 - 0x73023000      C:\WINNT\System32\WINSPOOL.DRV
    0x6D1E0000 - 0x6D21C000      C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\fontmanager.dll
    0x5ED00000 - 0x5EDC6000      C:\WINNT\System32\OPENGL32.dll
    0x68B20000 - 0x68B3E000      C:\WINNT\System32\GLU32.dll
    0x73760000 - 0x737A4000      C:\WINNT\System32\DDRAW.dll
    0x73BC0000 - 0x73BC6000      C:\WINNT\System32\DCIMAN32.dll
    0x0DD70000 - 0x0DFA2000      C:\WINNT\System32\ialmgicd.dll
    0x0DFB0000 - 0x0E02B000      C:\WINNT\System32\ialmgdev.dll
    0x6D340000 - 0x6D348000      C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\net.dll
    0x0FFA0000 - 0x0FFC1000      C:\WINNT\System32\dssenh.dll
    0x6D370000 - 0x6D37A000      C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\packager.dll
    0x0E860000 - 0x0E870000      C:\Program Files\Oracle\JInitiator 1.3.1.18\bin\JNIsharedstubs.dll
    0x76BF0000 - 0x76BFB000      C:\WINNT\System32\PSAPI.DLL
    Local Time = Tue Aug 29 08:53:29 2006
    Elapsed Time = 4
    # The exception above was detected in native code outside the VM
    # Java VM: Java HotSpot(TM) Client VM (1.3.1_04-b02 mixed mode)
    #

  • RoboHelp for Word Version 8-Run-time error 49-Bad DLL calling convention

    I just installed the trial version of RH8. I have RH5 installed. I also have Word97 installed. When I start RH8, the RH Explorer pane opens, but when it tries to open Word, the following error message appears: "Microsoft Visual Basic - Run-time error '49'. Bad DLL calling convention." Any ideas on what I can do to fix this problem?

    See Snippets on my site.
    See www.grainge.org for RoboHelp and Authoring tips
    Follow me @petergrainge

  • VB Error  - Runtime error '49' Bad DLL  calling convention

    Hi Experts,
    When User is running report he is getting error VB Error  - Runtime error '49' Bad DLL  calling convention .
    Can you please suggest how to resolve this issue?
    User has already tried uninstalling SAP GUI and installing again.
    Thanks & Regards
    Deepak Chavan.

    Hi Deepak,
    this doesnt appear to be an SAP error.
    I did a Google search on the error & got lots of hits, including:
    http://www.bigresource.com/VB-WindowFromPoint-Bad-DLL-calling-convention-run-time-error-49--G1wKaVeqwY.html
    Its a Microsoft Visual Basic programming error code.
    Rgds,
    Colum

  • Why does the DLL function executed by call library node fail when the Vi is re-opened?

    Development System
    OS: Windows XP
    LabVIEW: version 10.0
    DLL: Custom 
    Compiler: Visual C++ 6.0
    Function Prototype: __declspec(dllexport) const char * test(void)
    We have developed a DLL for use.  The DLL compiles cleanly.  The DLL includes a function test.  The test function validates the functional capabilities of the DLL.  I have followed the examples online, and I have used the import shared library tool in LabVIEW.  The VIs created use the call library node. 
    When I create a VI calling the test function from the custom DLL using the call library node the VI executes the DLL function test flawlessly.  I close the VI.  When I re-open the VI and run it, I get an error code from the DLL.  However, if I go to the block diagram and set the path for the DLL in the configure call library node again then the VI executes the DLL function test flawlessly again. 
    I have to set the path for the DLL in the configure call library node every time I open the VI.  The examples I downloaded from the community do not require this.  What might the DLL be missing?  What am I missing? 
    Solved!
    Go to Solution.

    I think it was rather unfair of me to ask for help with my DLL issue without disclosing more detailed information.  As a corrective action, I have attached a zipped file.  The zipped file contains the entire VC++ 6.0 project for compiling the DLL, the DLL, and the VI I have been using to test it. 
    ###NOTE####
     As a prerequisite to compilation and usage of the DLL you'll need to have installed Python 26 on your system.   
    You may obtain the MSI for correct version of Python from the following location:
    http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi
    ###NOTE###
    Thank you very kindly for any assistance offered!
    Thanks,
    Bill
    Attachments:
    C_DLL_PYTHON_AND_LABVIEW2010.zip ‏1685 KB

  • Tool for generating JNI Wrapper DLL

    Hi,
    In my project I need to access methods from third party C++ DLL using JNI.
    For that I will have to write a JNI Wrapper DLL.
    I am a java programmer and have no idea about C++ programming and creating DLLs.
    Is there any tool available that can generate wrapper DLL for me out of that third party DLL?
    Thanks
    -Pragati

    Hi
    I am working on JNI Implementaion.
    Please help me out in generating the DLL file using VC++.
    I am able to successfully compile the file and able to generate the lib files but it is not generating the DLL file.
    Can you please check this once.
    Displaying the following message.
    --------------------Configuration: ikmp2lib - Win32 Release--------------------
    Compiling...
    ikmp2Lib1.c
    IKMP_lib.c
    Linking...
    Microsoft (R) Incremental Linker Version 6.00.8168
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib D:\DecevalJNI\ikmp2lib\Release\ikmp2Lib1.obj D:\DecevalJNI\ikmp2lib\Release\IKMP_lib.obj D:\DecevalJNI\ikmp2
    lib\Release\IKMP_callback.obj c:\forte\install\lib\qqsm.lib c:\forte\install\lib\qqfo.lib c:\forte\install\lib\qqdo.lib c:\forte\install\lib\qqcm.lib c:\forte\install\lib\qqkn.lib kmpapi32.lib OLDNAMES.LIB OLDNAMES.LIB KERNEL32.LIB USER32.LIB GDI32.
    LIB WINSPOOL.LIB COMDLG32.LIB SHELL32.LIB WSOCK32.LIB NETAPI32.LIB WINMM.LIB ADVAPI32.LIB
    Creating library ikmp2Lib1.lib and object ikmp2Lib1.exp
    ikmp2lib.dll - 0 error(s), 0 warning(s)
    Thanks and Regards
    Chatrapathi

  • Bad DLL Calling Convention

    Hi,
    I've created a dll with LV8.6 and I'm trying to call it from VB6.0.  I get the message 'Bad Dll Calling Convention.  Run Time Error '49'.
    Questions:
    1.  Any idea what might cause this error?
    2.  What is the meanig of the second function appear inh the h file ( long __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module)
    Thanks very much for your help
    Rafi
    The dll definition as appear in the h file:
         void __stdcall EDASAnalysis(double f_sampleMHz, char FilePathFromOut[],
             double *RMSValue, double *AmplitudePP);
         long __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module);
    The Decleration in Visual Basic 6.0:
         Declare Sub EDASAnalysis Lib "D:\NI Projects\eDAS400\DLL\ LV-DLL_V2\DLL\eDAS400_Analysis.dll" _
                (ByVal f_sampleMHz As Long, ByVal FilePath As String, RMSValue As Long, AmplitudePP As Long)
    Using the Function in VB6.0:
        Call EDASAnalysis(10, "D:\NI Projects\eDAS400\Data Files\Samples\10MHz.txt", rms, pp)

    Rafi2003 wrote:
    Hi,
    I've created a dll with LV8.6 and I'm trying to call it from VB6.0.  I get the message 'Bad Dll Calling Convention.  Run Time Error '49'.
    Questions:
    1.  Any idea what might cause this error?
    2.  What is the meanig of the second function appear inh the h file ( long __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module)
    Thanks very much for your help
    Rafi
    The dll definition as appear in the h file:
         void __stdcall EDASAnalysis(double f_sampleMHz, char FilePathFromOut[],
             double *RMSValue, double *AmplitudePP);
         long __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module);
    The Decleration in Visual Basic 6.0:
         Declare Sub EDASAnalysis Lib "D:\NI Projects\eDAS400\DLL\ LV-DLL_V2\DLL\eDAS400_Analysis.dll" _
                (ByVal f_sampleMHz As Long, ByVal FilePath As String, RMSValue As Long, AmplitudePP As Long)
    Using the Function in VB6.0:
        Call EDASAnalysis(10, "D:\NI Projects\eDAS400\Data Files\Samples\10MHz.txt", rms, pp)
    muks already pointed you to a discussion that shows the problem. VB can not call cdecl exported functions, so when you create your DLL you'll have to tell LabVIEW to use the stdcall calling convention to export the function for VB.
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • DLL calling convention

    I wonder what calling convention I should select at the call library node for these 2 cases of DLL
    if my functions in the DLL are declared as follow;
    1. extern "C" void PASCAL EXPORT my_function()
    2. void __declspec(dllexport) my_function2()
    thanks

    The first one uses the obsolete type PASCAL. This has been mapped to __stdcall so that is what you should put in your Call Library Node.
    The second one doesn't declare an explicit calling convention so I have to make some assumptions:
    1. This is not a member fuction of a C++ class.
    2. You haven't defined an explicity calling convension in the compiler (such as /Gz or /Gr).
    In that case, it defaults to __cdecl.
    Brian Tyler
    http://detritus.blogs.com/lycangeek

  • Writed a dll for save string in teststand,get a error from teststand

    I'm writed a dll for save string in teststand, the dll can execute by itself well,but when loading by teststand, it always error heppen,I attached all resource here ,please kindly help me on this,thank you in advance.
    帖子被alexzheng在06-15-2006 03:19 AM时编辑过了
    Attachments:
    dll.zip ‏32 KB

    HI,
    I have resolved the problem, I have wrong define in the write function use : writetextfile(CString filename,CString text,int length)
    but the error happen when I transfer those string from teststand to dll,it generation a system level error and automatic close teststand software occur,
    after I change the define for :writetextfile(char *filename,char *text,int length) ,it is Ok now.
    帖子被alexzheng在06-15-2006 06:44 PM时编辑过了
    Attachments:
    err1.jpg ‏21 KB
    err1.jpg ‏21 KB

  • Update fix call quality issue?

    Looking for feedback if the OTA update fixed the call quality issue.

    I contacted Motorola directly and asked. The rep informed me that the Kit Kat update did NOT address call quality concerns.
    Might there be another update available that does? (If so, the rep did not know of one.)  I LOVE the Moto X but bought the HTC One solely because of the call quality concerns of the Moto X.

Maybe you are looking for

  • T500 Vista buying experience and initial setup problems

    This a long post but I felt the information could be used by others buying a notebook and trying to set it up. I have used a Thinkpad T40 (1 GB, XP Pro) at work since 2003  and just love the rock-solid keyboard, screen, and hinges. The IT department

  • Application module with no connection to the database in jdeveloper 10.1.3

    I have a number of programmatic bc view objects and entity objects which i have implemented through the time from different projects and now that i have collected them i want to add all of them in a reusable application module. However i don't need a

  • Placing a file

    hi gurus, an xml file is being spit from an abap program, instead of putting it on the desktop, it needs to be placed in FTP server. can some one help me with this.

  • Service Purchase Requisitions not being transferred

    Dear Experts, I'm not able to transfer the service purchase requisitions with service master but it is working fine for standard purchase requisitions with material master in SRM 7.0 using report bbp_exttransfer_req. Also how to address different pur

  • Messages send by mistakes

    Is it possible to retrieved messages send by mistakes?