// JP opened flex table

Click to See Complete Forum and Search --> : VC DLLs work only in VC


m1z0
July 20th, 1998, 09:14 AM
Hi,


I have written a DLL with 1 exported function using Visual C++ 5.0

When I link it in a program written in VC there is no problem.

When I gave that DLL to a guy who is using Watcom C++ 11.0 he can't link to the function.


Any suggestions?


regards

m1z0

Robert Dickenson
July 21st, 1998, 05:23 AM
Have you exported the function with extern "C". Function name decoration (or name mangling) is compiler dependant due to lack of a standard. This will cause a problem when trying to dynamically link to the function by name from another development tool. This could be avoided by using ordinal values instead. Search for extern C in the online help for more information.

Paul Reynolds
July 21st, 1998, 08:26 AM
Also, VC generates some useful headers which help:


// If this DLL is dynamically linked against the MFC

// DLLs, any functions exported from this DLL which

// call into MFC must have the AFX_MANAGE_STATE macro

// added at the very beginning of the function.

//

// For example:

//

// extern "C" BOOL PASCAL EXPORT ExportedFunction()

// {

// AFX_MANAGE_STATE(AfxGetStaticModuleState());

// // normal function body here

// }

//

// It is very important that this macro appear in each

// function, prior to any calls into MFC. This means that

// it must appear as the first statement within the

// function, even before any object variable declarations

// as their constructors may generate calls into the MFC

// DLL.

//

// Please see MFC Technical Notes 33 and 58 for additional

// details.

//JP added flex table