Giter Site home page Giter Site logo

compiler - linker flags? about cout HOT 7 CLOSED

imnetcat avatar imnetcat commented on September 26, 2024
compiler - linker flags?

from cout.

Comments (7)

imnetcat avatar imnetcat commented on September 26, 2024

Рад что вы всё ещё не сдались в попытках использовать мой проект)
Я оставлял ремарку в вики и в ридми проекта о том что компилировать желательно в Visual Studio, так как я не проверял насколько всё правильно компилируется и работает с mingw. Но насколько я вижу по вашей ошибке проблема линковки возникает с моей стороны
попробуйте добавить
#include "protocol/smtp/mail/mail.h"
перед
#include "protocol/smtp/client.h"

отпишитесь потом

from cout.

junecat avatar junecat commented on September 26, 2024

У вас прекрасная поддержка проекта :-)

всем бы так.

Сейчас попробую, правильно я понимаю, что библиотек crypt32, libcrypto64MTd и libssl64MTd (ну, и заголовочных файлов от openssl) должно быть достаточно для сборки проекта?

Спасибо.

from cout.

imnetcat avatar imnetcat commented on September 26, 2024

Я просто рад и приятно удивлён что мой код действительно кому-то нужен :0
Да, вы правильно поняли

from cout.

junecat avatar junecat commented on September 26, 2024

Спасибо за ответ.

я заранее прошу прощения, что дальше "многобукв", я надеюсь, что мой комментарий будет полезен.

Ваш проект очень интересен, так как нет ни одного общеизвестного проекта кроссплатформенной заголовочной библиотеки для отправки email. Наиболее известна https://github.com/karastojko/mailio, но она требует boost, а boost - это просто монстр.

К сожалению, я столкнулся с такой трудностью:

ок, с тем, как линковать libssl - я разобрался благодаря stackoverflow.

Когда c этим справился - стал получать при попытке собрать свою тестовую программу ошибки линковки, точно такие же, как в том файле, который я уже присылал.

Но теперь я посмотрел на эти ошибки более внимательно. Они все вида "undefined reference to Protocol::SMTP::Client::SetServer", "undefined reference to Protocol::SMTP::Client::SetPassword" и т.п. - то есть, я просто не все файлы включаю в команду сборки проекта!

И тут мы подходим к самому интересному.

Вы собираете проект при помощи VS, она умная, и все действия с компилятором происходят у неё "в кишочках".

Я собираю проект из командной строки, командой

g++.exe -std=c++17 -static -g test_mail.cpp -lssl -lcrypto -lws2_32 -lgdi32 -lcrypt32 -o test_mail.exe

и в эту команду мне нужно после "test_mail.cpp" добавить все остальные фалы Вашего проекта, иначе не слинкуется.

А я их не знаю, они содержатся в проекте *.vcproj, котрый не включен в github - репозиторий (и это, наверное, правильно, если Вы хотите, чтобю Ваш проект собирался не только студией)

Кроме того, если я использую Ваш проект именно как header-only library, добавлять эти файлы не очень удобно: в идеале хотелось бы просто включить что то инклудом, и получить нужную функциональность.

Очень интеерсное решение этой проблемы я встречал в таком проекте: https://github.com/nlohmann/json
Это header-only json library, и у неё есть как бы две версии: одна - девелоперская, где код разбит на файлы, разложенные по папкам. Вторая - то, что нужно "просто подключить": это один файл https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp в который включен весь код.

я думаю, у парня используется какая то специальная система сборки, которая это файл делает из всех остальных файлов проекта.

Теперь о пожелании: не могли бы вы в wiki просто перечислить файлы проекта? Можно даже просто добавить картинку открытой студии, где они все видны.

Надеюсь, я вас не огорчил.

Успехов!

from cout.

imnetcat avatar imnetcat commented on September 26, 2024

точно, вы правы
cpp файлов в проекте довольно много, думаю вам стоит подождать релиза
вы меня вдохновили, так что я на выходных займусь этим проектом, и соберу релиз как раз как nlohmann собрал свой релиз json - так и хотел сделать самого начала

from cout.

imnetcat avatar imnetcat commented on September 26, 2024

пре-релиз готов
вики опять отчасти устарела, поскольку я поменял архитектуру приложения
обновил и исправил немного пример и добавил два примера попроще в [папке examples] (https://github.com/imnetcat/cout/examples) что бы и без вики пока что можно было разобраться
Стоит отметить что теперь для релизной версии требуются релизные версии библиотек OpenSSL:
libcrypto64MT.lib
libssl64MT.lib
а для дебаг версии - дебаг версии библиотек соответсвено
libcrypto64MTd.lib
libssl64MTd.lib

crypt32.lib никуда не делась, так и осталась

кстати прежде чем использовать мой фреймворк стоит разрешить "доступ к аккаунту из неизвестных приложений" в настройках аккаунта электронной почты

from cout.

imnetcat avatar imnetcat commented on September 26, 2024

Если снова появятся проблемы - откроем снова, а пока считаю этот issue исчерпанным

from cout.

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.