This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

No output from an executable when linked to a dll (both executable and dll build by me)


Hi ppl,

I have a problem when running an executable, it seems that is running
fine, but I don't get any output in the console.

I need to build the [Paho MQQT
Client](https://eclipse.org/paho/clients/c/) in Cygwin. So I modified
the Makefile in order to build .dll instead of .so files. I have
attached the changes I made to the Makefile(Makefile_cygwin.patch). I
followed the instructions
[here](https://cygwin.com/cygwin-ug-net/dll.html) for the dll.

The client comes with some sample applications, so I tried to run one
of them, MQTTAsync_publish.exe. I would expect to get the following
output (I run it in a linux box)

$ Waiting for publication of Hello World!
$ on topic MQTT Examples for client with ClientID: ExampleClientPub
$ Connect failed, rc 0

but I don't get anything in the console and the application seems to
run without any other output or any indication. First I thought that I
hadn't linked correctly the dll, but I executed the following

$ cygcheck.exe ./MQTTAsync_publish.exe
C:\cygwin64-fresh\home\svagionitis\workspace\org.eclipse.paho.mqtt.c.git\build\output\samples\MQTTAsync_publish.exe
  C:\cygwin64-fresh\bin\cygwin1.dll
    C:\Windows\system32\KERNEL32.dll
      C:\Windows\system32\API-MS-Win-Core-RtlSupport-L1-1-0.dll
      C:\Windows\system32\ntdll.dll
      C:\Windows\system32\KERNELBASE.dll
      C:\Windows\system32\API-MS-Win-Core-ProcessThreads-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Heap-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Memory-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Handle-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Synch-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-File-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-IO-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-ThreadPool-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-LibraryLoader-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-NamedPipe-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Misc-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-SysInfo-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Localization-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-String-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Debug-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-ErrorHandling-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Fibers-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Util-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Core-Profile-L1-1-0.dll
      C:\Windows\system32\API-MS-Win-Security-Base-L1-1-0.dll
  C:\cygwin64-fresh\usr\local\lib\cygpaho-mqtt3a.dll.1.0

and it seems that the library is there. I have installed all the
produced libraries in the /usr/local/lib and I have added the
/usr/local/lib to the PATH.

I am not sure what might be the problem, is it something related to
the output or something else? I am open to any suggestions of how to
pinpoint the problem.

Thank you in advance.

Regards,

Stavros

P.S. I have attached the cygcheck.out for more info of the system.

Attachment: cygcheck.out
Description: Binary data

diff --git a/Makefile b/Makefile
index 9f9f002..0fd2441 100755
--- a/Makefile
+++ b/Makefile
@@ -30,8 +30,14 @@ endif
 # determine current platform
 BUILD_TYPE ?= debug
 ifeq ($(OS),Windows_NT)
-	OSTYPE ?= $(OS)
-	MACHINETYPE ?= $(PROCESSOR_ARCHITECTURE)
+	ifeq ($(shell uname -s | cut -d - -f 1),CYGWIN_NT)
+		OSTYPE ?= $(shell uname -s | cut -d - -f 1)
+		MACHINETYPE ?= $(shell uname -m)
+		build.level = $(shell date)
+	else
+		OSTYPE ?= $(OS)
+		MACHINETYPE ?= $(PROCESSOR_ARCHITECTURE)
+	endif
 else
 	OSTYPE ?= $(shell uname -s)
 	MACHINETYPE ?= $(shell uname -m)
@@ -109,20 +115,41 @@ MAJOR_VERSION = 1
 MINOR_VERSION = 0
 VERSION = ${MAJOR_VERSION}.${MINOR_VERSION}
 
-MQTTLIB_C_TARGET = ${blddir}/lib${MQTTLIB_C}.so.${VERSION}
-MQTTLIB_CS_TARGET = ${blddir}/lib${MQTTLIB_CS}.so.${VERSION}
-MQTTLIB_A_TARGET = ${blddir}/lib${MQTTLIB_A}.so.${VERSION}
-MQTTLIB_AS_TARGET = ${blddir}/lib${MQTTLIB_AS}.so.${VERSION}
+ifeq ($(OSTYPE),CYGWIN_NT)
+MQTTLIB_C_LIBNAME = cyg${MQTTLIB_C}.dll
+MQTTLIB_CS_LIBNAME = cyg${MQTTLIB_CS}.dll
+MQTTLIB_A_LIBNAME = cyg${MQTTLIB_A}.dll
+MQTTLIB_AS_LIBNAME = cyg${MQTTLIB_AS}.dll
+else
+MQTTLIB_C_LIBNAME = lib${MQTTLIB_C}.so
+MQTTLIB_CS_LIBNAME = lib${MQTTLIB_CS}.so
+MQTTLIB_A_LIBNAME = lib${MQTTLIB_A}.so
+MQTTLIB_AS_LIBNAME = lib${MQTTLIB_AS}.so
+endif
+
+MQTTLIB_C_TARGET = ${blddir}/${MQTTLIB_C_LIBNAME}.${VERSION}
+MQTTLIB_CS_TARGET = ${blddir}/${MQTTLIB_CS_LIBNAME}.${VERSION}
+MQTTLIB_A_TARGET = ${blddir}/${MQTTLIB_A_LIBNAME}.${VERSION}
+MQTTLIB_AS_TARGET = ${blddir}/${MQTTLIB_AS_LIBNAME}.${VERSION}
+
 MQTTVERSION_TARGET = ${blddir}/MQTTVersion
 
-CCFLAGS_SO = -g -fPIC $(CFLAGS) -Os -Wall -fvisibility=hidden
 FLAGS_EXE = $(LDFLAGS) -I ${srcdir} -lpthread -L ${blddir}
 FLAGS_EXES = $(LDFLAGS) -I ${srcdir} ${START_GROUP} -lpthread -lssl -lcrypto ${END_GROUP} -L ${blddir}
 
+ifeq ($(OSTYPE),CYGWIN_NT)
+CCFLAGS_SO = -g $(CFLAGS) -Os -Wall -fvisibility=hidden
+LDFLAGS_C = $(LDFLAGS) -shared -Wl,-init,$(MQTTCLIENT_INIT) -Wl,--no-whole-archive -lpthread -Wl,--export-all-symbols -Wl,--enable-auto-import
+LDFLAGS_CS = $(LDFLAGS) -shared -Wl,-init,$(MQTTCLIENT_INIT) -Wl,--no-whole-archive -lpthread $(EXTRA_LIB) -lssl -lcrypto -Wl,--export-all-symbols -Wl,--enable-auto-import
+LDFLAGS_A = $(LDFLAGS) -shared -Wl,-init,$(MQTTASYNC_INIT) -Wl,--no-whole-archive -lpthread -Wl,--export-all-symbols -Wl,--enable-auto-import
+LDFLAGS_AS = $(LDFLAGS) -shared -Wl,-init,$(MQTTASYNC_INIT) -Wl,--no-whole-archive -lpthread $(EXTRA_LIB) -lssl -lcrypto -Wl,--export-all-symbols -Wl,--enable-auto-import
+else
+CCFLAGS_SO = -g -fPIC $(CFLAGS) -Os -Wall -fvisibility=hidden
 LDFLAGS_C = $(LDFLAGS) -shared -Wl,-init,$(MQTTCLIENT_INIT) -lpthread
 LDFLAGS_CS = $(LDFLAGS) -shared $(START_GROUP) -lpthread $(EXTRA_LIB) -lssl -lcrypto $(END_GROUP) -Wl,-init,$(MQTTCLIENT_INIT)
 LDFLAGS_A = $(LDFLAGS) -shared -Wl,-init,$(MQTTASYNC_INIT) -lpthread
 LDFLAGS_AS = $(LDFLAGS) -shared $(START_GROUP) -lpthread $(EXTRA_LIB) -lssl -lcrypto $(END_GROUP) -Wl,-init,$(MQTTASYNC_INIT)
+endif
 
 ifeq ($(OSTYPE),Linux)
 
@@ -135,10 +162,10 @@ END_GROUP = -Wl,--end-group
 
 EXTRA_LIB = -ldl
 
-LDFLAGS_C += -Wl,-soname,lib$(MQTTLIB_C).so.${MAJOR_VERSION}
-LDFLAGS_CS += -Wl,-soname,lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -Wl,-no-whole-archive
-LDFLAGS_A += -Wl,-soname,lib${MQTTLIB_A}.so.${MAJOR_VERSION}
-LDFLAGS_AS += -Wl,-soname,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -Wl,-no-whole-archive
+LDFLAGS_C += -Wl,-soname,${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_CS += -Wl,-soname,${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION} -Wl,-no-whole-archive
+LDFLAGS_A += -Wl,-soname,${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_AS += -Wl,-soname,${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION} -Wl,-no-whole-archive
 
 else ifeq ($(OSTYPE),Darwin)
 
@@ -152,11 +179,27 @@ END_GROUP =
 EXTRA_LIB = -ldl
 
 CCFLAGS_SO += -Wno-deprecated-declarations -DUSE_NAMED_SEMAPHORES
-LDFLAGS_C += -Wl,-install_name,lib$(MQTTLIB_C).so.${MAJOR_VERSION}
-LDFLAGS_CS += -Wl,-install_name,lib$(MQTTLIB_CS).so.${MAJOR_VERSION}
-LDFLAGS_A += -Wl,-install_name,lib${MQTTLIB_A}.so.${MAJOR_VERSION}
-LDFLAGS_AS += -Wl,-install_name,lib${MQTTLIB_AS}.so.${MAJOR_VERSION}
+LDFLAGS_C += -Wl,-install_name,${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_CS += -Wl,-install_name,${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_A += -Wl,-install_name,${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_AS += -Wl,-install_name,${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION}
+
+else ifeq ($(OSTYPE),CYGWIN_NT)
 
+SED_COMMAND = sed -i "s/\#\#MQTTCLIENT_VERSION_TAG\#\#/${release.version}/g; s/\#\#MQTTCLIENT_BUILD_TAG\#\#/${build.level}/g"
+
+MQTTCLIENT_INIT = _MQTTClient_init
+MQTTASYNC_INIT = _MQTTAsync_init
+START_GROUP =
+END_GROUP = 
+
+EXTRA_LIB = -ldl
+
+CCFLAGS_SO += -Wno-deprecated-declarations -DUSE_NAMED_SEMAPHORES
+LDFLAGS_C += -Wl,--out-implib=${blddir}/lib$(MQTTLIB_C).dll.a
+LDFLAGS_CS += -Wl,--out-implib=${blddir}/lib$(MQTTLIB_CS).dll.a
+LDFLAGS_A += -Wl,--out-implib=${blddir}/lib${MQTTLIB_A}.dll.a
+LDFLAGS_AS += -Wl,--out-implib=${blddir}/lib${MQTTLIB_AS}.dll.a
 endif
 
 all: build
@@ -192,26 +235,26 @@ ${ASYNC_SAMPLES}: ${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_A_TARGET)
 ${MQTTLIB_C_TARGET}: ${SOURCE_FILES_C} ${HEADERS_C}
 	$(SED_COMMAND) $(srcdir)/MQTTClient.c
 	${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_C} ${LDFLAGS_C}
-	-ln -s lib$(MQTTLIB_C).so.${VERSION}  ${blddir}/lib$(MQTTLIB_C).so.${MAJOR_VERSION}
-	-ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_C).so
+	-ln -s ${MQTTLIB_C_LIBNAME}.${VERSION}  ${blddir}/${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION}
+	-ln -s ${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION} ${blddir}/${MQTTLIB_C_LIBNAME}
 
 ${MQTTLIB_CS_TARGET}: ${SOURCE_FILES_CS} ${HEADERS_C}
 	$(SED_COMMAND) $(srcdir)/MQTTClient.c
 	${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_CS} -DOPENSSL ${LDFLAGS_CS}
-	-ln -s lib$(MQTTLIB_CS).so.${VERSION}  ${blddir}/lib$(MQTTLIB_CS).so.${MAJOR_VERSION}
-	-ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_CS).so
+	-ln -s ${MQTTLIB_CS_LIBNAME}.${VERSION}  ${blddir}/${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION}
+	-ln -s ${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION} ${blddir}/${MQTTLIB_CS_LIBNAME}
 
 ${MQTTLIB_A_TARGET}: ${SOURCE_FILES_A} ${HEADERS_A}
 	$(SED_COMMAND) $(srcdir)/MQTTAsync.c
 	${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_A} ${LDFLAGS_A}
-	-ln -s lib$(MQTTLIB_A).so.${VERSION}  ${blddir}/lib$(MQTTLIB_A).so.${MAJOR_VERSION}
-	-ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_A).so
+	-ln -s ${MQTTLIB_A_LIBNAME}.${VERSION}  ${blddir}/${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION}
+	-ln -s ${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION} ${blddir}/${MQTTLIB_A_LIBNAME}
 
 ${MQTTLIB_AS_TARGET}: ${SOURCE_FILES_AS} ${HEADERS_A}
 	$(SED_COMMAND) $(srcdir)/MQTTAsync.c 
 	${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_AS} -DOPENSSL ${LDFLAGS_AS}
-	-ln -s lib$(MQTTLIB_AS).so.${VERSION}  ${blddir}/lib$(MQTTLIB_AS).so.${MAJOR_VERSION}
-	-ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_AS).so
+	-ln -s ${MQTTLIB_AS_LIBNAME}.${VERSION}  ${blddir}/${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION}
+	-ln -s ${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION} ${blddir}/${MQTTLIB_AS_LIBNAME}
 
 ${MQTTVERSION_TARGET}: $(srcdir)/MQTTVersion.c $(srcdir)/MQTTAsync.h ${MQTTLIB_A_TARGET} $(MQTTLIB_CS_TARGET)
 	${CC} ${FLAGS_EXE} -o $@ -l${MQTTLIB_A} $(srcdir)/MQTTVersion.c -ldl
@@ -222,31 +265,39 @@ strip_options:
 install-strip: build strip_options install
 
 install: build
+	$(INSTALL) -d $(DESTDIR)${libdir}
+	$(INSTALL) -d $(DESTDIR)${includedir}
 	$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_C_TARGET} $(DESTDIR)${libdir}
 	$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_CS_TARGET} $(DESTDIR)${libdir}
 	$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_A_TARGET} $(DESTDIR)${libdir}
 	$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_AS_TARGET} $(DESTDIR)${libdir}
+	-$(INSTALL_DATA) ${blddir}/lib*.dll.a $(DESTDIR)${libdir}
 	$(INSTALL_PROGRAM) ${INSTALL_OPTS} ${MQTTVERSION_TARGET} $(DESTDIR)${bindir}
-	/sbin/ldconfig $(DESTDIR)${libdir}
-	ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so
-	ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so
-	ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so
-	ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so
+	-/sbin/ldconfig $(DESTDIR)${libdir}
+	-ln -s ${MQTTLIB_C_LIBNAME}.${VERSION}  $(DESTDIR)${libdir}/${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION}
+	ln -s ${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION} $(DESTDIR)${libdir}/${MQTTLIB_C_LIBNAME}
+	-ln -s ${MQTTLIB_CS_LIBNAME}.${VERSION}  $(DESTDIR)${libdir}/${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION}
+	ln -s ${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION} $(DESTDIR)${libdir}/${MQTTLIB_CS_LIBNAME}
+	-ln -s ${MQTTLIB_A_LIBNAME}.${VERSION}  $(DESTDIR)${libdir}/${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION}
+	ln -s ${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION} $(DESTDIR)${libdir}/${MQTTLIB_A_LIBNAME}
+	-ln -s ${MQTTLIB_AS_LIBNAME}.${VERSION}  $(DESTDIR)${libdir}/${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION}
+	ln -s ${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION} $(DESTDIR)${libdir}/${MQTTLIB_AS_LIBNAME}
 	$(INSTALL_DATA) ${srcdir}/MQTTAsync.h $(DESTDIR)${includedir}
 	$(INSTALL_DATA) ${srcdir}/MQTTClient.h $(DESTDIR)${includedir}
 	$(INSTALL_DATA) ${srcdir}/MQTTClientPersistence.h $(DESTDIR)${includedir}
 
 uninstall:
-	rm $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so.${VERSION}
-	rm $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so.${VERSION}
-	rm $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so.${VERSION}
-	rm $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so.${VERSION}
+	rm $(DESTDIR)${libdir}/${MQTTLIB_C_LIBNAME}.${VERSION}
+	rm $(DESTDIR)${libdir}/${MQTTLIB_CS_LIBNAME}.${VERSION}
+	rm $(DESTDIR)${libdir}/${MQTTLIB_A_LIBNAME}.${VERSION}
+	rm $(DESTDIR)${libdir}/${MQTTLIB_AS_LIBNAME}.${VERSION}
 	rm $(DESTDIR)${bindir}/MQTTVersion
-	/sbin/ldconfig $(DESTDIR)${libdir}
-	rm $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so
-	rm $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so
-	rm $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so
-	rm $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so
+	-/sbin/ldconfig $(DESTDIR)${libdir}
+	rm $(DESTDIR)${libdir}/${MQTTLIB_C_LIBNAME}
+	rm $(DESTDIR)${libdir}/${MQTTLIB_CS_LIBNAME}
+	rm $(DESTDIR)${libdir}/${MQTTLIB_A_LIBNAME}
+	rm $(DESTDIR)${libdir}/${MQTTLIB_AS_LIBNAME}
+	rm $(DESTDIR)${libdir}/*paho-mqtt3*.dll.a
 	rm $(DESTDIR)${includedir}/MQTTAsync.h
 	rm $(DESTDIR)${includedir}/MQTTClient.h
 	rm $(DESTDIR)${includedir}/MQTTClientPersistence.h
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]