Как реэкспортировать статическую библиотеку CLR c ++ - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть эти файлы:

  • foo.dll
  • foo.lib
  • foo.exp
  • bar.il
  • bar.netmodule

"foo" определяет функции в своем каталоге экспорта.

У меня также есть проект Visual Studio 2010 C ++, который создает управляемый файл "bar.dll"

Я хочу, чтобы "bar" статически связывался с "foo" и реэкспортировал все функции из "foo".

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

Использование приведенного ниже кода не работает, так как оно ссылается на foo вместо слияния bar с foo .

#pragma comment(linker, "/include:_foomethod@12")

Как мне это сделать?

Смотри также: http://msdn.microsoft.com/en-us/library/f0z8kac4(v=VS.100).aspx

CFF Explorer для проверки каталога экспорта: http://www.ntcore.com/exsuite.php

Смотри также: http://msdn.microsoft.com/en-us/library/k669k83h.aspx

Смотри также: http://blogs.msdn.com/b/texblog/archive/2007/04/05/linking-native-c-into-c-applications.aspx

call "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\link.exe" /DLL /LTCG /CLRIMAGETYPE:IJW   /ASSEMBLYMODULE:bar.netmodule   /OUT:bar.dll foo.lib bar.netmodule

foo.netmodule : fatal error LNK1302: only support linking safe .netmodules; unable to link ijw/native .netmodule

1 Ответ

0 голосов
/ 06 апреля 2011

Я понял это.

Вместо этих файлов потребуются:

  • foo.obj
  • bar.cpp
  • bar.obj

Компилятор C ++ / CLI cl.exe сможет компилировать панель, ссылаться на неуправляемые и управляемые миры.

На следующем шаге будет использован компоновщик для объединения файлов obj в одну сборку смешанного режима, содержащую:

  • неуправляемый экспорт из foo
  • неуправляемый экспорт из бара
  • управляемые типы IL из бара

Команда, используемая для связывания файлов obj:

call "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\link.exe" /DLL /LTCG /CLRIMAGETYPE:IJW     /OUT:bar.dll *.obj

Дополнительно: можно переименовать экспортированные имена функций после компиляции cpp в obj в каталоге экспорта по своему вкусу:)

...