[tao-users] Windows 10 Entry Point Error
maggiari at b-k.it
maggiari at b-k.it
Tue Jan 23 05:14:26 CST 2018
Hello!
Any help on the following would be great. Please let me know if I have to
provide more details.
ACE+TAO VERSION: 6.4.6
HOST MACHINE and OPERATING SYSTEM: Windows 10 Home x64
COMPILER NAME AND VERSION (AND PATCHLEVEL): Using MS visual studio 2017
community edition 15.4.0
THE $ACE_ROOT/ace/config.h FILE: #include "ace/config-win32.h"
AREA/CLASS/EXAMPLE AFFECTED: Compilation is clean, linking is clean.
DOES THE PROBLEM AFFECT: EXECUTION?
Yes.
SYNOPSIS
Application Run-time failure involves:
The procedure entry point ??shortSequence@@QEAA at AEBV0@@Z could not be
located in the dynamic link library myexe.exe
The procedure entry point ??getObjectID at ComServer@Sim@@UEAA_NPEBDAEAH at Z
could not be located in the dynamic link library SimLib.dll
The procedure entry point
??getCommandList at ComEntity@Sim@@UEAA_NV?$TAP_Seq_Out_T at VComCommandList@@@@Z
could not be located in the dynamic link library SimTr.dll
DESCRIPTION
This is my situation: I come from ACE+TAO 6.0.1 (Win 7) compiled for x64
arch and this works fine. I'm moved on VS2017 using ACE+TAO 6.4.6. ACE+TAO
compilation works fine.
I use and link ACE+TAO libs
(TAO_PortableServer.lib,TAO_AnyTypeCode.lib,TAO_IORTable.lib,TAO.lib,ACE.lib)
in some my dynamic libraries (which compile and link fine, all classes
export symbols with __declspec(dllexport)) and then I link these libraries
with a my application.
Running this application I got a sequence of run-time failure at dynamic
library loading time (works fine with older ACE+TAO 6.0.1 under Win 7):
The procedure entry point ??shortSequence@@QEAA at AEBV0@@Z could not be
located in the dynamic link library myexe.exe
The procedure entry point ??getObjectID at ComServer@Sim@@UEAA_NPEBDAEAH at Z
could not be located in the dynamic link library SimLib.dll
The procedure entry point
??getCommandList at ComEntity@Sim@@UEAA_NV?$TAP_Seq_Out_T at VComCommandList@@@@Z
could not be located in the dynamic link library SimTr.dll
All entry point errors speaks about some IDL types/interfaces. Looking
inside libraries (with VS dumpbin) these symbols there are.
I compile the IDL with this command:
tao_idl -Wb,export_macro=__declspec(dllexport) Sim.idl
I attach my IDL at the mail end. I suspect I need to update the IDL
somehow or use others IDL options to compile.
It's strange because I have to say that under a Linux environment works
fine with the same ACE+TAO version!
Can you give me some ideas?
Many thanks,
Best Regards
Dario
--------------------------------- IDL ----------------------------
typedef long IDType;
struct vector2f
{
float x;
float y;
};
struct vector2d
{
double x;
double y;
};
struct vector3f
{
float x;
float y;
float z;
};
struct vector3d
{
double x;
double y;
double z;
};
enum DataType
{
DT_BOOLEAN,
DT_CHAR,
DT_SHORT,
DT_USHORT,
DT_LONG,
DT_ULONG,
DT_FLOAT,
DT_DOUBLE,
DT_VECTOR2F,
DT_VECTOR2D,
DT_VECTOR3F,
DT_VECTOR3D,
DT_STRING,
DT_BOOLEAN_SEQUENCE,
DT_CHAR_SEQUENCE,
DT_SHORT_SEQUENCE,
DT_USHORT_SEQUENCE,
DT_LONG_SEQUENCE,
DT_ULONG_SEQUENCE,
DT_FLOAT_SEQUENCE,
DT_DOUBLE_SEQUENCE,
DT_VECTOR2F_SEQUENCE,
DT_VECTOR2D_SEQUENCE,
DT_VECTOR3F_SEQUENCE,
DT_VECTOR3D_SEQUENCE,
DT_STRING_SEQUENCE
};
typedef sequence<boolean> booleanSequence;
typedef sequence<char> charSequence;
typedef sequence<short> shortSequence;
typedef sequence<unsigned short> ushortSequence;
typedef sequence<long> longSequence;
typedef sequence<unsigned long> ulongSequence;
typedef sequence<float> floatSequence;
typedef sequence<double> doubleSequence;
typedef sequence<vector2f> vector2fSequence;
typedef sequence<vector2d> vector2dSequence;
typedef sequence<vector3f> vector3fSequence;
typedef sequence<vector3d> vector3dSequence;
typedef sequence<string> stringSequence;
union DataValue switch (DataType)
{
case DT_BOOLEAN:
boolean booleanData;
case DT_CHAR:
char charData;
case DT_SHORT:
short shortData;
case DT_USHORT:
unsigned short ushortData;
case DT_LONG:
long longData;
case DT_ULONG:
unsigned long ulongData;
case DT_FLOAT:
float floatData;
case DT_DOUBLE:
double doubleData;
case DT_VECTOR2F:
vector2f vector2fData;
case DT_VECTOR2D:
vector2d vector2dData;
case DT_VECTOR3F:
vector3f vector3fData;
case DT_VECTOR3D:
vector3d vector3dData;
case DT_STRING:
string stringData;
case DT_BOOLEAN_SEQUENCE:
booleanSequence booleanSequenceData;
case DT_CHAR_SEQUENCE:
charSequence charSequenceData;
case DT_SHORT_SEQUENCE:
shortSequence shortSequenceData;
case DT_USHORT_SEQUENCE:
ushortSequence ushortSequenceData;
case DT_LONG_SEQUENCE:
longSequence longSequenceData;
case DT_ULONG_SEQUENCE:
ulongSequence ulongSequenceData;
case DT_FLOAT_SEQUENCE:
floatSequence floatSequenceData;
case DT_DOUBLE_SEQUENCE:
doubleSequence doubleSequenceData;
case DT_VECTOR2F_SEQUENCE:
vector2fSequence vector2fSequenceData;
case DT_VECTOR2D_SEQUENCE:
vector2dSequence vector2dSequenceData;
case DT_VECTOR3F_SEQUENCE:
vector3fSequence vector3fSequenceData;
case DT_VECTOR3D_SEQUENCE:
vector3dSequence vector3dSequenceData;
case DT_STRING_SEQUENCE:
stringSequence stringSequenceData;
};
struct ComData
{
string Name;
DataValue Value;
};
typedef sequence<ComData> ComDataList;
struct ComCommand
{
string Name;
ComDataList Parameters;
};
typedef sequence<ComCommand> ComCommandList;
struct ComReply
{
string Name;
boolean Success;
ComDataList ReturnValues;
};
module Sim
{
struct ComEntityDescriptor
{
string Name;
string Type;
};
typedef sequence<ComEntityDescriptor> ComEntityDescriptorList;
interface ComEntity
{
ComEntityDescriptor getDescriptor();
boolean getParametersList(out ComDataList p_Parameters);
boolean getParameter(inout ComData p_Parameter);
boolean setParameter(in ComData p_Parameter);
boolean getParameters(inout ComDataList p_Parameters);
boolean setParameters(in ComDataList p_Parameters);
boolean getCommandsList(out ComCommandList p_Commands);
ComReply executeCommand(in ComCommand p_Command, in ComEntity
p_Commander);
oneway void invokeCommand(in ComCommand p_Command, in ComEntity
p_Commander, in boolean p_IsReplyRequested);
oneway void replyCallback(in ComReply p_Reply, in ComEntity p_Replier);
};
interface ComClient
{
string getUniqueID();
string getUDPAddress();
stringSequence getEntitiesAvailableTypesList();
boolean createEntity(in ComEntityDescriptor p_ComEntityDescriptor);
boolean destroyEntity(in ComEntityDescriptor p_ComEntityDescriptor);
ComEntityDescriptorList getEntityDescriptorList();
ComEntity getEntity(in ComEntityDescriptor p_ComEntityDescriptor);
oneway void notifyEntityRegistration (in ComEntityDescriptor
p_ComEntityDescriptor);
oneway void notifyEntityDeregistration(in ComEntityDescriptor
p_ComEntityDescriptor);
oneway void setObjectDOF(in double p_Time, in IDType p_ObjectID, in
IDType p_ComponentID, in vector3d p_Position, in vector3d p_Rotation);
oneway void scaleObject (in double p_Time, in IDType p_ObjectID, in
IDType p_ComponentID, in vector3d p_Scale);
oneway void attachObject(in double p_Time, in IDType p_ObjectID, in
string p_AttachToObject, in string p_AttachToLabel);
oneway void detachObject(in double p_Time, in IDType p_ObjectID);
oneway void hideObject (in double p_Time, in IDType p_ObjectID, in
IDType p_ComponentID);
oneway void showObject (in double p_Time, in IDType p_ObjectID, in
IDType p_ComponentID);
};
interface ComServer
{
boolean registerClient (in Sim::ComClient p_ComClient);
boolean unregisterClient(in Sim::ComClient p_ComClient);
boolean registerEntity (in ComEntityDescriptor p_ComEntityDescriptor,
in Sim::ComClient p_ComClient);
boolean unregisterEntity(in ComEntityDescriptor p_ComEntityDescriptor,
in Sim::ComClient p_ComClient);
stringSequence getClientIDList();
string getClientID(in ComEntityDescriptor p_ComEntityDescriptor);
ComClient getClient(in string p_ID);
ComClient getEntityClient(in ComEntityDescriptor p_ComEntityDescriptor);
ComEntityDescriptorList getEntityDescriptorList();
boolean getObjectID(in string p_Name, out IDType p_ID);
boolean getMulticastAddress(out string p_MulticastAddress);
double getTime();
oneway void setObjectDOF(in double p_Time, in IDType p_ObjectID, in
IDType p_ComponentID, in vector3d p_Position, in vector3d p_Rotation);
oneway void scaleObject (in double p_Time, in IDType p_ObjectID, in
IDType p_ComponentID, in vector3d p_Scale);
oneway void attachObject(in double p_Time, in IDType p_ObjectID, in
string p_AttachToObject, in string p_AttachToLabel);
oneway void detachObject(in double p_Time, in IDType p_ObjectID);
oneway void hideObject (in double p_Time, in IDType p_ObjectID, in
IDType p_ComponentID);
oneway void showObject (in double p_Time, in IDType p_ObjectID, in
IDType p_ComponentID);
};
};
------------------------------------ IDL
----------------------------------------
More information about the tao-users
mailing list