Giter Club home page Giter Club logo

Comments (3)

gdamore avatar gdamore commented on July 24, 2024

Yeah, the problem here is an age old one of how Windows DLLs work. There are probably ways we could make this a little less painful.

The NNG_STATIC_LIB macro should be set when building a static library, which causes the symbols to be renamed -- without that we default to using the dynamic version of symbol naming, and you get these link failures.

This is only a problem on Windows, and I'm not sure how to do a better job of making this easy for folks using DLLs or using static libraries. Right now the default favors DLL users.

from nng.

gdamore avatar gdamore commented on July 24, 2024

If some Windows / CMake GURU comes along, maybe they can offer some wisdom to make this better.

from nng.

alawn-wang avatar alawn-wang commented on July 24, 2024

NNG / Nanomsg compilation under windows

Created by Robert Heslar, with a template Just a moment ago3 min read Analytics this is instructions i have used to build the NNG library from sources

visual studio 2017 and above is required for these steps

📘 Instructions

clone the repo: GitHub - nanomsg/nng: nanomsg-next-generation -- light-weight brokerless messaging

open a visual studio command prompt, and navigate to the build directory

run cmake .., from the command line, this will create a visual studio solution named nng.sln

open the nng.sln, in visual studio

in visual studio, rebuild the solution, we now have a nng.lib file, for use with a NNG / Nanomsg Application

Highlight important information in a panel like this one. To edit this panel's color or style, select one of the options in the menu.

📋 Related articles this shows the instructions used to build the NNG asyc application demo, found in the NNG demos folder

create the folder path as below, so cmake can find the library and header files for the NNG asyc application demo:

copy the nng includes into the include path above, the include directory in the NNG asyc application demo path:

copy the nng.lib file from the nng/build/Debug directory(from steps in the above article), to the NNG asyc application lib directory

for this NNG application, have this CMakelist.text file:

CMakeLists.txt 26 Jan 2023, 10:09 AM 6) open a visual studio command prompt, and navigate to the NNG asyc application demo build directory

  1. navigate to the NNG asyc application demo build directory path

8 run cmake .., form the NNG asyc application demo build directory

  1. a visual studio solution will be created with the name: nng-asyncdemo.sln
  2. open the nng-asyncdemo.sln in visual studio
  3. run rebuild all, in the nng-asyncdemo solution, in visual studio

problems: (added nng.lib from steps before (compiling nng source under windows)

when compiling the NNG asyc application demo visual studio we now get the following linker errors:

NNG application missing link symbols:

2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_close referenced in function server_function 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_listen referenced in function server_function 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_listener_create referenced in function run_server 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_listener_start referenced in function run_server 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_listener_get_addr referenced in function run_server 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_strerror referenced in function fatal 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_send referenced in function server_function 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_recv referenced in function recive_function1 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_free referenced in function recive_function1 2>survey.obj : error LNK2019: unresolved external symbol __imp_nng_surveyor0_open referenced in function server_function CMakeLists.txt CMakeLists.txt

if you want to use static lib in windows, maybe you should add a pre-compile instruction for your pre-processor such like this 'add_compile_definitions(NNG_STATIC_LIB)' in your CMakeList

from nng.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.