Как статически связать использование link.exe

Можно установить Apache для обслуживания страниц отовсюду с любыми ограничениями, но он обычно распределяется в более безопасной форме.

Редактирование Ваших апачских файлов (http.conf одно из более общих названий) позволит Вам устанавливать любую папку, таким образом, это появится в Вашем webroot.

РЕДАКТИРОВАНИЕ:

псевдоним myapp c:\myapp\

я отредактировал свой ответ для включения формата для создания псевдонима в http.conf файле, который является видом подобных ярлык в окнах или символьной ссылке под un*x, где Apache 'притворяется', что папка находится в webroot. Это, вероятно, будет более полезным для Вас в долгосрочной перспективе.

17
задан Community 23 May 2017 в 12:32
поделиться

3 ответа

У вас есть для определения POCO_STATIC в командной строке и связывания с PocoFoundationmt и PocoNetmt.lib:

C:\test>cl /MD /WX /nologo /EHsc /DPOCO_STATIC /DUNICODE /D_UNICODE /I..\poco\Foundation\include /I ..\poco\Net\include /c exp.cpp

exp.cpp

C:\test>link /libpath:..\poco\lib /WX /nologo exp.obj PocoNetmt.lib PocoFoundationmt.lib

[ОБНОВЛЕНИЕ] Если вы компилируете с / DPOCO_STATIC , тогда нет необходимости указывать библиотеки POCO в командной строке компоновщика. Заголовочные файлы содержат операторы #pragma comment (lib, "PocoXXXmt.lib") , которые должны гарантировать, что все необходимые библиотеки будут связаны.

Если вы не компилируете с / DPOCO_STATIC , то вместо этого автоматически будут связаны библиотеки импорта DLL. [/ UPDATE]

15
ответ дан 30 November 2019 в 13:45
поделиться

Похоже, проблема в том, что файл PocoNet.lib является библиотекой импорта для poco.dll. Таким образом, внешние элементы, которые он разрешает, относятся к DLL.

Вам нужно будет найти или создать статическую библиотеку для Poco (если возможно).

5
ответ дан 30 November 2019 в 13:45
поделиться

Вам понадобится / MT в вашем коде и всех его зависимостях для статической ссылки на среду выполнения MSVC (MSVCP90.dll / MSVCR90.dll).

Это потому, что PocoNetmt.lib, похоже, построить с помощью /MT.

Если с / MT вы все еще получаете msvcprt.lib, включите / verbose и выясните, какая другая библиотека его перетаскивает. Затем перекомпилируйте / найдите статическую сборку этого.

Другой вариант - найти статическую библиотеку PocoNet, созданную с помощью / MD (чтобы вы статически связывались с ней, но динамически выполняли ее) и переключите все на /MD.

EDIT : Когда Poco dll связана с / MT, это не влияет на вас. Но поскольку вы хотите избавиться от него, вам (и всем вашим другим зависимостям) придется использовать тот же флаг / MT.

0
ответ дан 30 November 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: