1

私は Windows 7 に移行し、Slickedit 17 64 ビットに移行しており、64 ビットとして再作成する必要がある 32 ビットの古い Slickedit 拡張 DLL があります。この DLL は、基本的に WinAPI 呼び出し用のラッパーの集まりです。

Slickedit には、makefile だけの 32 ビット 'simple.dll' プロジェクト (ahem) の例が付属しています。Slickedits ライブラリを使用して 64 ビット DLL をビルドするように Visual Studio プロジェクトをセットアップする方法を知る必要があります。

提供されるメイクファイルは次のとおりです。

# This makefile supports the following Visual C++ versions: 
# 7.10 (Visual Studio 2003), 8.00 (Visual Studio 2005),
# and 9.00 (Visual Studio 2008)
#
# Nmake macros for building Windows 32-Bit apps
!include <Win32.mak>

# Set linkdebug to nothing to link DLL without debug
#linkdebug=

DLLNAME=simple
cflags=$(cflags) -D_WINDOWS -I..\..\h

all: $(DLLNAME).lib $(DLLNAME).dll

# Update the object files if necessary

$(DLLNAME).obj: $(DLLNAME).cpp
    $(cc) $(cflags) $(cvarsmt) $(cdebug) -Tp $*.cpp

# Update the import library

$(DLLNAME).lib: $(DLLNAME).obj $(DLLNAME).def
    $(implib) -machine:$(CPU) \
    -def:$(DLLNAME).def $*.obj -out:$*.lib

# Update the dynamic link library

LIBDIR=lib
$(DLLNAME).dll: $(DLLNAME).obj $(DLLNAME).def makefile
    $(link) $(linkdebug) \
    -NODEFAULTLIB:libc -base:0x1C000000  \
    -dll -entry:_DllMainCRTStartup$(DLLENTRY) \
    -out:$*.dll  \
    $*.exp $*.obj ..\..\$(LIBDIR)\dllmain.obj ..\..\$(LIBDIR)\vsapi.lib ..\..\$(LIBDIR)\secommon.lib $(conlibsmt)

clean :
    del $(DLLNAME).dll $(DLLNAME).obj $(DLLNAME).pdb $(DLLNAME).ilk

Makefile は私のものではなく、とにかくこれは 32 ビットに設定されています。では、このタイプの C++ ビルドを処理するように Studio プロジェクトをセットアップするにはどうすればよいでしょうか。私が持っている:

  • C:\se17\lib\dllmain.obj
  • C:\se17\lib\secommon.lib
  • C:\se17\lib\tagsdb.lib
  • C:\se17\lib\vsapi.lib

C:\se17\h に提供されたヘッダー ディレクトリ

community.slickedit.comでまともな反応が得られるかどうかかなり懐疑的なので、SOに質問しています。とにかく神は彼らを愛しています

4

1 に答える 1

1

DLL ターゲットが 64 ビットであることをリンカーに伝える必要があります。/MACHINE:X64これはリンカー行で行われます。「$(linkdebug)」の後に追加するだけです。

また、この質問で説明されているように、コンパイラが amd64 バージョンを指すように設定する必要があり ます。

于 2012-12-29T22:19:28.850 に答える