Comments (9)
Did you try to build any executables (like the samples) after you did this? I'm getting a .lib file (although it's only 32kB) and getting all sorts of errors and warnings now.
from paho.mqtt.cpp.
If you ask for a static build, does it still try to build the DLL?
from paho.mqtt.cpp.
According to this Stackoverflow's question, the paho-mqttpp3.lib is not created because there are no symbols exported. Then, I used the DLLExport
macro from Paho MQTT C to test:
class DLLExport async_client : public virtual iasync_client
{
// ...
};
And it forces the Visual Studio to create the paho-mqttpp3.lib:
C:\Temp\paho.mqtt.cpp\build_cmake>dir src
Volume in drive C is OSDisk
Volume Serial Number is C2D6-0DCE
Directory of C:\Temp\paho.mqtt.cpp\build_cmake\src
06/01/2017 11:54 AM <DIR> .
06/01/2017 11:54 AM <DIR> ..
06/01/2017 11:54 AM <DIR> CMakeFiles
05/31/2017 06:23 PM 1,449 cmake_install.cmake
05/31/2017 06:23 PM 25,405 Makefile
06/01/2017 11:54 AM <DIR> mqtt
05/31/2017 06:24 PM 639,488 paho-mqttpp3.dll
05/31/2017 06:24 PM 381 paho-mqttpp3.dll.manifest
05/31/2017 06:24 PM 94,568 paho-mqttpp3.exp
05/31/2017 06:24 PM 156,904 paho-mqttpp3.lib
6 File(s) 918,195 bytes
4 Dir(s) 809,452,789,760 bytes free
from paho.mqtt.cpp.
I guess the DLLExport
is required in every class/symbol the samples (or other binary) will use. Otherwise, you will get a lot of "undefined reference" errors. Also, I'm struggling with other errors, like library paths and machine architecture mismatch. The things get complicated because I don't have too much experience with NMake.
from paho.mqtt.cpp.
I went through and tried adding it to all the classes, but then started having errors from static data, so then tried to figure that out.
I also got lots and lots of C4251 warnings. This seems to be mostly (if not all) from things that Microsoft tells you to ignore, but I can't really be sure if they are all safe to ignore without reading through each and every of them, and I don't really feel like doing that!
What's worrisome, though, is a couple of issues raised by the documentation for the warning:
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k(C4251);k(vs.output)&rd=true
- No inlined methods of your class can modify static data.
- No inlined methods of your class use CRT functions or other library functions use static data
I don't know if I can make this promise, or that I can remember it in the future!
By this, I would claim that Windows DLL's are not fully compliant with C++11, and that is the one thing I have tried to stick with, and require, in this library.
So, basically, if the static library CMake build works for Windows, I am content that release 1.0 doesn't support DLL's. Then we can make an issue to be addressed in the next release, if ever.
from paho.mqtt.cpp.
Can we use CMake to just build a static .lib file on Windows?
from paho.mqtt.cpp.
So, basically, if the static library CMake build works for Windows,
@fpagliughi yes, it works. Clients can link against the paho-mqttpp3-static.lib instead of the pair paho-mqttpp3.lib / paho-mqttpp3.dll.
I am content that release 1.0 doesn't support DLL's.
We must state somewhere (documentation? enforce through the CMakeLists.txt?) that the current version does not support DLLs.
Then we can make an issue to be addressed in the next release, if ever.
Perfect.
Can we use CMake to just build a static .lib file on Windows?
Yes, it already does. If the option PAHO_BUILD_STATIC
is enabled , the compilation produces the paho-mqttpp3-static.lib file.
cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX="C:\Temp\paho-cpp" -DPAHO_MQTT_C_PATH="C:\Temp\paho-c" -DPAHO_WITH_SSL=FALSE -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_STATIC=TRUE -DGTEST_PATH="C:\Temp\GTest" -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=TRUE ..
from paho.mqtt.cpp.
If you ask for a static build, does it still try to build the DLL?
Yes, @fpagliughi. Currently, the static library creation is optional, the DLL is mandatory.
from paho.mqtt.cpp.
Fixed in the 'develop' branch. Windows can now build static and shared lib.
from paho.mqtt.cpp.
Related Issues (20)
- No consumer notification when broker cleanly disconnects HOT 3
- paho.mqtt.cpp looks for PahoMqttC, but the package named - eclipse-paho-mqtt-c. HOT 2
- CMake Error when PAHO_BUILD_SAMPLES=TRUE (Cannot find src/samples/async_consume_v5.cpp) HOT 1
- Why is this project under Eclipse v1.0 when paho.mqtt.c is under Eclipse v2.0? HOT 1
- Building paho.mqtt.cpp: cmake doesn't pick up my c++ compiler correctly. HOT 4
- Homebrew Installation HOT 1
- Automatic Reconnect Crashes MQTT when `client.reconnect()` is called HOT 7
- Connect failed, more to try HOT 1
- SSL_read() Segmentation fault
- Build with PAHO_WITH_MQTT_C is broken HOT 3
- broker(emqx) already support QUIC, and i Hope client also supports the Quic protocol HOT 1
- arm cross get error HOT 5
- Add getter for the connect_options object (connOpts_) in async_client
- Operation not permitted on try_consume_message async HOT 1
- Base64TestOpenSSL giving problem and how to use only paho-mqtt3as libraray project in visual studio HOT 1
- Cross compilation of paho.mqtt.cpp HOT 9
- cmake issue in Docker container HOT 2
- error in install_paho_mqtt_c.sh in the installation process of the latest version of paho.mqtt.cpp HOT 1
- ThreadSanitizer: lock-order-inversion (potential deadlock) paho 1.2.0
- Linker-Error when compiling with v1.3.2 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from paho.mqtt.cpp.