Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where is SetOaNoCache defined?

Attempting to disable BSTR caching:

SetOaNoCache();

VC++ compiler build output:

  • 'SetOaNoCache': identifier not found

Don't want to use:

  • OANOCACHE=1

Question:

  • Where is SetOaNoCache defined - header file?
like image 450
Aaron Avatar asked Dec 30 '22 05:12

Aaron


2 Answers

It is not defined in a header file, it is in OLEAUT32.dll. You can call it like this:

typedef int (*SETOANOCACHE)(void);

void DisableBSTRCache() { HINSTANCE hLib = LoadLibrary("OLEAUT32.DLL"); if (hLib != NULL) { SETOANOCACHE SetOaNoCache = (SETOANOCACHE)GetProcAddress(hLib, "SetOaNoCache"); if (SetOaNoCache != NULL) SetOaNoCache(); FreeLibrary(hLib); } }

like image 94
Patrick Glandien Avatar answered Jan 01 '23 19:01

Patrick Glandien


It's not. From the Win32 API library shipped with C++ Builder:

Requirements

Windows XP: Requires Windows XP Service Pack 2 or later.

Windows 95/98: Not supported.

Header: Not supplied. Declare prototype as shown.

Library: Use oleaut32.lib.

The prototype as shown:

inline void TurnOffCache ()
{
// Function prototype.
extern "C" SetOaNoCache(); 
// Turn off BSTR caching.
SetOaNoCache();
}
like image 22
Ken White Avatar answered Jan 01 '23 19:01

Ken White