Чтобы избежать проблемы с кодовым именем кода C++, я использовал extern «C» в своем файле заголовка. Но проблема по-прежнему сохраняется «, когда я строю свой DLL-файл с использованием Borland C++ IDE».Как устранить проблему, возникшую при смене имени даже после использования extern «C»?
Ниже приведен пример кода.
Others.h файл
#define H_EXPORT WINAPI
#ifdef __cplusplus
extern "C" {
#endif
long H_EXPORT RegOpenKeyEx32(DWORD hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,DWORD FAR *phkResult);
#ifdef __cplusplus
}
#endif
Others.cpp файл
#define C_EXPORT WINAPI _export
//The function has been define like this
long C_EXPORT RegOpenKeyEx32(HKEY hKey,
LPCSTR lpSubKey,
DWORD ulOptions,
REGSAM samDesired,
PHKEY phkResult)
{
//some code
}
порядковое значение, заданное для этой функции в четкости файла
RegOpenKeyEx32 @ 243
но, после создания dll я выставил dll с помощью Dll Export Viewer, это порядковое значение изменяется на 85 и имя функции изменено на @ RegOpenKeyEx32 $ qqsp6HKEY__pxcululpp6HKEY__ и функции подогнаны как этот
В том же файле, т.е., others.cpp только некоторые имена функций (5 имен функций) получить Игнорируемые, оставшиеся имена функций одинаковы (не получить имя, искаженное). Я не понял, в чем проблема?
Любая идея, что проблема пожалуйста ответ ...
ли другие.cpp включают others.h? –
@MarcGlisse да это другие.h include in others.cpp – 4ever
У вас нет экстерна «C» вокруг определения функции в others.cpp – cup