C++, Как скомпилировать dll в .exe

Вам нужно использовать group by, чтобы ваша count() работала:

SELECT fc.id AS replyId, user.username AS owner, fc.reply_content AS content, 
 fc.created_at AS createdAt, COUNT(rl.id) AS likes
 FROM forum_replies fc 
 JOIN users user
 ON fc.owner_id = user.id 
 JOIN reply_likes rl 
 ON fc.id = rl.reply_id
 WHERE fc.post_id = :postId AND fc.is_shown = 1
 Group by fc.id, u.username, fc.reply_content, fc.created_at
 ORDER BY fc.created_at DESC
7
задан 1 May 2009 в 14:52
поделиться

6 ответов

In order to achieve that you will need static linking. This requires that all your libraries (and the libraries they depend upon recursively) need to be available as static libraries. Be aware that the size of your executable will be large, as it will carry all the code from those static libraries. This is why shared libraries (DLLs) were invented in the first place, to be able to share common code among applications. However that does not always work so well on windows.

I think what you may really want is an installer that installs your executable and all it's dependent libraries.

10
ответ дан 6 December 2019 в 07:28
поделиться

Вы можете использовать ILMerge

3
ответ дан 6 December 2019 в 07:28
поделиться

I came across dll2lib utility once. Interesting piece, though pricey one. It allows you to convert virtually any dll to a static library, which may be later linked with your application to produce solid exe. IIRC, free version will show certain notification (MessageBox) upon entering a function from such generated library.

3
ответ дан 6 December 2019 в 07:28
поделиться

Есть статья в DDJ от 2002 года, которая может иметь то, что вы хотите:

По сути, он использует комбинацию ссылок на DLL с помощью MSVC. функция «отложенной загрузки» и упаковка DLL как встроенного ресурса в EXE. Затем DLL автоматически извлекается во время выполнения, когда сделан первый вызов одного из экспортов.

Я не использовал эту технику, поэтому я не могу прокомментировать, насколько хорошо она работает, но она, безусловно, выглядит как скользкая. идея.

4
ответ дан 6 December 2019 в 07:28
поделиться

Вам нужны специальные инструменты упаковщика, такие как XBundler .

2
ответ дан 6 December 2019 в 07:28
поделиться

В общем, нет. Библиотеки DLL имеют несколько необычное поведение, такое как получение Loader Lock при загрузке и вызов DllMain в этих точках. Хотя теоретический компоновщик может организовать вызов каждого DllMain из приложения main (), этого не произойдет при Loaded Lock. Эта блокировка загрузчика находится под контролем ОС. Кроме того, библиотеки DLL уведомляются о новых потоках через свою библиотеку DLLMain, и это тоже почти невозможно подделать.

0
ответ дан 6 December 2019 в 07:28
поделиться
Другие вопросы по тегам:

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